SlideShare a Scribd company logo
これから始める
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/Dr
      iver/AbstractFileDriver.php line 116
YAMLとXMLの注意
●   新しいDocumentを変換する際にException
    ●   Warning: class_parents()
    ●   vendor/doctrine-mongodb-
        odm/lib/Doctrine/ODM/MongoDB/Mapping/Cl
        assMetadataFactory.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/for
        ms/types/entity.html
MongoDBではどうするの?
ありがとうございました

More Related Content

What's hot

死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglist
Kuniyoshi Tone
 
nanocのhelper 利用実例
nanocのhelper 利用実例nanocのhelper 利用実例
nanocのhelper 利用実例
Go Maeda
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
parrotstudio
 
何なのc?
何なのc?何なのc?
何なのc?
Mutsumi IWAISHI
 
ガラホ、なるものに対応してきた
ガラホ、なるものに対応してきたガラホ、なるものに対応してきた
ガラホ、なるものに対応してきた
baban ba-n
 
Python02
Python02Python02
Python02
XMLProJ2014
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会
大樹 小倉
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
 

What's hot (9)

死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglist
 
nanocのhelper 利用実例
nanocのhelper 利用実例nanocのhelper 利用実例
nanocのhelper 利用実例
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
 
何なのc?
何なのc?何なのc?
何なのc?
 
ガラホ、なるものに対応してきた
ガラホ、なるものに対応してきたガラホ、なるものに対応してきた
ガラホ、なるものに対応してきた
 
Python02
Python02Python02
Python02
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
 

Viewers also liked

St. Charles Parish Library 2013: Googling for Answers
St. Charles Parish Library 2013: Googling for AnswersSt. Charles Parish Library 2013: Googling for Answers
St. Charles Parish Library 2013: Googling for Answers
Sonnet Ireland
 
PIN Slides for Open Access Week 2012
PIN Slides for Open Access Week 2012PIN Slides for Open Access Week 2012
PIN Slides for Open Access Week 2012Sonnet Ireland
 
For the benefit of all
For the benefit of allFor the benefit of all
For the benefit of allSonnet Ireland
 
Behind the Cloud: Cloud Computing Programs Demystified
Behind the Cloud: Cloud Computing Programs DemystifiedBehind the Cloud: Cloud Computing Programs Demystified
Behind the Cloud: Cloud Computing Programs Demystified
Sonnet Ireland
 
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
Sonnet Ireland
 
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
Sonnet Ireland
 
PIN Slides for Government Information 2012
PIN Slides for Government Information 2012PIN Slides for Government Information 2012
PIN Slides for Government Information 2012Sonnet Ireland
 
Embracing the 2010 census
Embracing the 2010 censusEmbracing the 2010 census
Embracing the 2010 census
Sonnet Ireland
 

Viewers also liked (8)

St. Charles Parish Library 2013: Googling for Answers
St. Charles Parish Library 2013: Googling for AnswersSt. Charles Parish Library 2013: Googling for Answers
St. Charles Parish Library 2013: Googling for Answers
 
PIN Slides for Open Access Week 2012
PIN Slides for Open Access Week 2012PIN Slides for Open Access Week 2012
PIN Slides for Open Access Week 2012
 
For the benefit of all
For the benefit of allFor the benefit of all
For the benefit of all
 
Behind the Cloud: Cloud Computing Programs Demystified
Behind the Cloud: Cloud Computing Programs DemystifiedBehind the Cloud: Cloud Computing Programs Demystified
Behind the Cloud: Cloud Computing Programs Demystified
 
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
To the Cloud! How to Compile and Analyze Reference Statistics Easily and for ...
 
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
Tweet-a-Librarian: Mobile Web 2.0 Reference for the Underfunded and Lonely Li...
 
PIN Slides for Government Information 2012
PIN Slides for Government Information 2012PIN Slides for Government Information 2012
PIN Slides for Government Information 2012
 
Embracing the 2010 census
Embracing the 2010 censusEmbracing the 2010 census
Embracing the 2010 census
 

Similar to Symfony2#5 LT

Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみる
Koji Iwazaki
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
Alisue Lambda
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Hidenori Goto
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
Tomofumi Yagi
 
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るKEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るandroid sola
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
yoku0825
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
Masashi Umezawa
 
140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoonRyo ONODERA
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
Tom Hayakawa
 
MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料Toshihito Gamo
 
CocoaPodsのはなし
CocoaPodsのはなしCocoaPodsのはなし
CocoaPodsのはなし
Hironytic
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
Tsuyoshi Yamamoto
 

Similar to Symfony2#5 LT (20)

Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみる
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るKEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来る
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
 
Rails vim easy
Rails vim easyRails vim easy
Rails vim easy
 
140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料
 
CocoaPodsのはなし
CocoaPodsのはなしCocoaPodsのはなし
CocoaPodsのはなし
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
kyotovim#1
kyotovim#1kyotovim#1
kyotovim#1
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
 

Symfony2#5 LT

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