Symfony2#5 LT

1,005 views

Published on

MongoDBBundle

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,005
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Symfony2#5 LT

  1. 1. これから始めるDoctrineMongoDBBundle の使い方 Symfony2勉強会 #5
  2. 2. 自己紹介● 小泉 正人● 映画向け映像加工アプリのプロダクトマネー ジャ● Symfony2歴 3ヶ月くらい● MongoDB歴 3ヶ月くらい● PHP たしなむ程度● twitter.com/hamichamp● http://on.fb.me/koizumimasato
  3. 3. 対象となる方● これからMongoDBをSymfony2で使ってみたい と思っている方。● 実践的な内容じゃなくてごめんなさい。● 個人的に苦労した部分をちょっぴり共有しま す。
  4. 4. 試した環境● MacOS X Lion● PHP バージョン5.3.6● MongoDB バージョン2.0● Symfony2 バージョン2.0.6● DoctrineMongoDBBundle バージョン2.0.0
  5. 5. 環境構築● MongoDBのインストールとか● php.iniの設定とか ● 探せばいっぱい出てくるので省略。● DoctrineMongoDBBundleのインストール ● 基本的には、公式ページの補足です。 ● http://symfony.com/doc/current/bundles/ DoctrineMongoDBBundle/index.htm ● これから説明します。
  6. 6. インストール● depsファイルの編集● インストールコマンド ● gitが必要です
  7. 7. 注意● 公式ページは書いてないけど、githubではこっそ りバージョンが指定されている!● 2.0ブランチかv2.0.0を使う ● version=origin/2.0 ● version=v2.0.0 (今回はこちらを使用)
  8. 8. その他の設定● app/autoload.php● app/AppKernel.php ● 公式ドキュメントのままなので省略
  9. 9. Documentの作成● マッピング方法は3種類 ● Annotations ● YAML ● XML● マッピングしたら、doctrineで生成 php app/console doctrine:mongodb:generate:documents [-- document[=”...”]] bundle
  10. 10. Annotationsの場合 ● Documentフォルダ ● コメントで指定 ● @MongoDBを付ける ● doctrineがset/getを自 動生成 ● 注意 ● 上書きされます ● .php~にリネーム
  11. 11. YAMLの場合 ● Resource/config/doctr ineフォルダ ● クラス.mongodb.yml という命名法則らし い ● doctrineがクラスファ イルを生成
  12. 12. XMLの場合● YAMLと記述方式以外は同じみたいなので省略
  13. 13. YAMLとXMLの注意● 記述的には出力先は自由に指定出来そうだけ ど・・・ ● Documentフォルダでないとダメみたい。 ● DoctrineでExceptionが発生 ● Notice: Undefined index: ● vendor/doctrine-mongodb- odm/lib/Doctrine/ODM/MongoDB/Mapping/Dr iver/AbstractFileDriver.php line 116
  14. 14. YAMLとXMLの注意● 新しいDocumentを変換する際にException ● Warning: class_parents() ● vendor/doctrine-mongodb- odm/lib/Doctrine/ODM/MongoDB/Mapping/Cl assMetadataFactory.php line 336 ● もう一度、Doctrineを実行するとうまくいく ● 他のバージョンで直っているかもしれません が、今回は未確認です。
  15. 15. 定義の優先順位● XML、YAML、Annotationsの順番っぽい ● XMLファイルがあると、YAMLとAnnotations は無視 ● YAMLファイルがあると、Annotationsは無視 ● 基本的には、どれか一種類で記述すると思う ので、あんまり気にしなくてもいいのかな?
  16. 16. 簡単な使い方● 保存とか● 検索とか● 更新とか● 削除とか ● 公式ページを見てみてください。
  17. 17. まとめ● 保存 ●$dm->persist($product)● 検索 ●$dm->getRepository(AcmeStore:Product)->find()● 更新 ● 検索で取得したオブジェクトを操作● 削除 ● $dm->remove($project)● DBに結果を反映するには、$dm->flush()
  18. 18. 省略● バリデーションとか ● 基本的に同じです。● Embedded Mappingとか● Reference Mappingとか ● http://www.doctrine- project.org/docs/mongodb_odm/1.0/en/index. html ● 但し、サンプルには@MongoDBがついてい ないので、追記してください。
  19. 19. おしまいだけど・・・
  20. 20. おまけ
  21. 21. エンティティフィールド● 選択肢を選ぶタイプ ● selectタグとか● DBからデータを参照したい● Entityを利用した方法は公式に書いてある ● http://symfony.com/doc/current/reference/for ms/types/entity.html
  22. 22. MongoDBではどうするの?
  23. 23. ありがとうございました

×