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