• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Doctrine2 odm-workshop-1

  • 2,361 views
Uploaded on

日本Symfonyユーザー会 第1回Symfony2勉強会 MongoDB ODMワークショップ基礎編

日本Symfonyユーザー会 第1回Symfony2勉強会 MongoDB ODMワークショップ基礎編

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,361
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
13
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Symfony2 ワークショップ Doctrine2 (MongoDB-ODM) 日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto) Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 2. 注意 2分 Symfony2は使いません Doctrine2はSymfony2の中でも役割が大きいので このワークショップでは独立して学習します MongoDB(ODM)でやりますが、MySQL(ORM)でも同じコンセプト なので応用できます (といっても、MongoDBの概念はRDBとはだいぶ違う) ★最後にSymfony2から使う方法があります Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 3.   ● 参考ドキュメントURL http://www.mongodb.org/display/DOCSJP/Home http://docs.symfony-reloaded.org/master/ http://www.doctrine- project.org/projects/mongodb_odm Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 4. MongoDB準備(5分) ● $ mongo > help > show dbs > use test > show collections > db.User.help() > db.User.find() ● pecl install mongo ● http://localhost:28017/ ←Webインターフェイス /etc/mongodb.conf rest=true を追加 動く方は、helpなどを見てください Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 5. Doctrine2 MongoDB ODM(1分) ● 概要 ODM = Object Document Mapper ORM的にMongoDBのドキュメント(レコード)を操作 Doctrine2 ORMとかなり統一性がある DQLっぽいもので検索できる ★もともとORMを使っていた開発者には、馴染みやすいス タイルと思われる Symfony2にも統合されている   Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 6. mongodb-odm(5分) ● Doctrine2のうち、MongoDBを扱うライブラリ $ mkdir wsroot  ←ワークショップ作業ルート(任意) $ cd wsroot $ git clone git://github.com/doctrine/ mongodb-odm.git $ cd mongodb-odm $ git submodule init $ git submodule update $ cd .. $ mkdir d2ws   ←作業ファイル用(任意) ● Git環境がない場合は今回用のパッケージをコピー Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 7. 01 ブートストラップ(5分) ● d2ws/01/01.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 8. 01 名前空間を使う (2分) Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 9. 02 (再)ドキュメントとは(1分) ● MongoDBに保存する1つのデータ構造(レコード) ドキュメントの集まり = コレクション ※コレクションがRDBのテーブルに相当する ● Doctrine2では、POPO(Plain Old PHP Object)のクラ スのメンバ変数(など)にアノテーションで設定を記述す る (この設定を「マッピング」と呼ぶ) Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 10. 02 ドキュメントの作成(5分) ● 02/Document/User.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 11. 02 ドキュメントの追加 (3分) ● d2ws/bootstrap.php(をコピーしてください) ● d2ws/02/02.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 12. 02 保存されたか確認(1分) ● $ mongo > use test > db.User.find() ● http://localhost:28017/test/User/ Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 13. 02 取得 (1) (2分) d2ws/02/02-find1.php  ドキュメントマネージャーからfind findの戻り値はMongoCursorオブジェクト foreachで回すと、マッピング先のオブジェクト(DocumentUser)で取得できる Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 14. 02 取得(2) (2分) ● d2ws/02/02-find2.php Queryオブジェクトを使う →Query Builder API Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 15. 02 取得(3) (-分)  ● d2ws/02/02-find3.php DQL DQLを使ってCRUD。まだExperimentalらしい Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 16. 02 ハイドレート (2分) ● Queryオブジェクトのhydrate()メソッドのパラメータで ON/OFF指定  true = ON  false = OFF ->hydrate(false) にすると、foreachで回した時にマッピ ングが行われていない素のMongoレコードが返される (配列) ★カーソルオブジェクトはそのままという点も注意 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 17. 02 hydrate off (1分) ● d2ws/02/02-find2-non-hydrate.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 18. 02 更新(1) persist→flush ● 最初にデータを追加したのとほぼ同じ。 ● 複数のpersistを1回のflushにまとめられる。 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 19. 02 更新(2) modifier ● modifierを使うと処理効率が良い & ATOMIC Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 20. 02 更新(3) modifier(multiple) ● multipleオプションを使いたい場合は、execute()のオプ ションで指定する。 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 21. 02 削除(1) remove→flush  ● DocumentManager経由 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 22. 02 削除(その他) ● QueryBuilder / DQL経由もupdateと同様 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 23. 03 Embedding(組み込み) (10分) ● まあやってみましょう ● d2ws/03/ -03.php -Document/ -User.php -Address.php UserにAddressをEmbedします Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 24. 03 Embedding マッピング ● d2ws/03/Document/Person.php にEmbed追加 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 25. 03 Embedding 保存 ● d2ws/03/03.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 26. 03 Embedding 取得 ● d2ws/03/03-retrieve.php Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 27. 04 Reference(参照) (10分) ● Embeddingと似ている ReferenceはMongoDB上で実体が別になる ※一度に検索できない ● d2ws/04/ -04.php -Document/ -User.php -Address.php Userに記述する構文はEmbedとほとんど一緒 Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 28. 04 Reference マッピング ● Embeddingと似ている アノテーションで、明示的にカスケードを指定する必要がある (Embeddingの場合は、デフォルトでカスケードされる) Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 29. 04 Reference 保存 ● 保存されたデータを確認 Rederenceの部分は、別コレクションのoidが保存される Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 30. 04 Reference 取得 ● 取得処理も同様(検索可能フィールドに注意) Symfony2ワークショップ Doctrine2 MongoDB-ODM
  • 31. まだまだありますが・・・ ● 次回にご期待くださいw ● Symfony2で使うには・・・・ ・app/AppKernel.php でバンドル有効化 ・app/config/config.phpでエクステンション設定 →「doctrine_odm.mongodb: ~」 ・ドキュメントマネージャーはコンテナ経由 「$this['doctrine.odm.mongodb.document_manager']」 →アノテーションがちょっとだけ違う 「@mongodb:Document」など Symfony2ワークショップ Doctrine2 MongoDB-ODM