SlideShare a Scribd company logo
Symfony2から
Doctrine MongoDB ODMを
使ってみる



                  2011-1-15
             Symfony2勉強会
         岩崎 晃司(@madapaja)
自己紹介

 名前        : 岩崎晃司
 誕生日       : 1981/11/6 (ぎりぎり20代)
 twitter   : @madapaja
 blog      : http://d.hatena.ne.jp/ja9/

仕事では主にPHPを使ってます。
SymfonyもMongoDBも、初心者ですが、、、
Symfony2から
Doctrine MongoDB ODMを
使ってみる
MongoDB

   ドキュメント指向データベースに属する
    DBです。
   詳細は割愛します。
Doctrine MongoDB ODM

 ODM=Object Document Mapper
 Doctrine2のMongoDB版みたいなもの
  です
 Symfony2でサポートされています

 Sandboxをダウンロードすると、もれなく
  ついてきます
環境を用意する

 Symfony2が動く環境を用意します
 Symfony2のSandboxを用意します

 MongoDBが必要です

 PHP Mongo Extensionが必要です
     sudo pecl install mongo でインストール
     php.ini に extension=mongo.so を追記
     httpdなどの再起動が必要かもね
使い方

Doctrine2 ORM とほぼ同じように使えるよ

1.   Doctrine MongoDB Bundleを有効に
2.   configに設定を追加
3.   Document(ORMでいうEntity)クラスを
     作る
4.   Let's access!
1.Doctrine MongoDB Bundleを有効に

     Sandboxのapp/AppKernel.php
class AppKernel extends Kernel
{
             :
  public function registerBundles()
  {
    $bundles = array(
            :
      // enable third-party bundles
            :
       new Symfony¥Bundle¥DoctrineMongoDBBundle¥
           DoctrineMongoDBBundle(),
      // ↑コメントアウトを解除し、有効に
            :
2. configに設定を追加
   app/config/config.yml
       最小限の設定
## MongoDB ODMの設定を追記。
doctrine_odm.mongodb:
    mappings:
        HelloBundle: ~

               MongoDB ODM を
               使用するバンドル名
2. configに設定を追加
   app/config/config.yml
       最小限の設定
## MongoDB ODMの設定を追記。
doctrine_odm.mongodb:
    mappings:
        HelloBundle: ~

            MongoDB ODM を
            使用するバンドル名
最小限の設定の場合、mongodb://localhost:27017の
defaultデータベースに接続するよ
2. configに設定を追加
   app/config/config.yml
       間違いが起きないように、
        最低限以下のような設定をした方が
        いいと思います。
## MongoDB ODMの設定を追記。
doctrine_odm.mongodb:
    mappings:
        HelloBundle: ~
    server: mongodb://localhost:27017
    default_database: my_db_name
3.Documentクラスを作る
   HelloBundle/Document/User.php
       Annotationは@mongodb: で始める
namespace Application¥HelloBundle¥Document;
/** @mongodb:Document(collection="users") */
class User {
    /** @mongodb:Id */
    protected $id;

     /** @mongodb:Date */
     protected $create_at;

     /** @mongodb:String */
     protected $name;

     // getter & Setter … …
}
3.Documentクラスを作る
    ちょっとした事。
        いつでも@mongodb:
/**
 * @mongodb:Indexes({
 *   @mongodb:Index(keys={"name"="asc"})
 * })
 */        油断して忘れない


        間違って、@mongodb:Timestamp を利用しない
     /** @mongodb:Date */
     protected $at;
                    普通の日時保存にはDate型を使う
4. Let's access!
     HelloBundle/Controller/HelloController.php
         落ち着いて、DocumentManagerを取得したら

// MongoDB ODM DocumentManager を取得
$dm = $this
  ->get('doctrine.odm.mongodb.document_manager');
4. Let's access!
     HelloBundle/Controller/HelloController.php
         煮るなり、焼くなりご自由に!

// 1.保存
// Userドキュメントを生成し、データを入れる
$user = new
    Application¥SasayakiBundle¥Document¥User();
$user->setName('madapaja');

$dm->persist($user); // データを入れて
$dm->flush(); // 保存
4. Let's access!
     HelloBundle/Controller/HelloController.php
         煮るなり、焼くなりご自由に!

// 2.取得
$sasayaki = $dm
    ->getRepository(
         ‘Application¥SasayakiBundle
          ¥Document¥User')
    ->findByName("madapaja")
    ->getResults();
4. Let's access!
     HelloBundle/Controller/HelloController.php
         煮るなり、焼くなりご自由に!
// 3.更新
$sasayaki = $dm
    ->createQuery(
         'Application¥SasayakiBundle
          ¥Document¥User')
    ->findAndModify()
    ->field('name')->equals('madapaja')
    // 更新します
    ->update()
    ->field('name')->set('まだぱじゃ')
    ->execute();
Annotationで設定したIndexの作成

   ID以外をインデックスされるように、
    @mongodb:Index アノテーションなどを
    指定している場合、
// Indexを作成
$dm->getSchemaManager()
    ->ensureIndexes();

    などとして、Indexを作りましょう。
最後に

 MongoDBの開発は非常に活発です。
 Shardingやレプリケーション、耐障害性
  などの向上、機能追加も予定(ver.1.7系、
  1.8~)されているようで、より運用しやす
  いプロダクトに成長し、使える幅が広が
  るのではないかと期待しています。
 面白い情報などありましたら、twitterなど
  で教えてください!
 MongoDB楽しい!
宣伝
     アジア初となるMongoDBのカンファレンス
          Mongo Tokyo
            が開催されます!

         3月1日(火) 13:00~19:30
        品川シーサイド楽天タワーにて

開発元である10genのエンジニアを含む講演が行われます。

                  詳細は:
     http://mongodb.jp/ からリンクしてます
ありがとうございました!

More Related Content

What's hot

Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
Joe_noh
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
Joe_noh
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
Koichi Uchimura
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -
Joe_noh
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
Joe_noh
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
 
Go言語のスライスを理解しよう
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しよう
Yasutaka Kawamoto
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
 
DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!
Jun Nogata
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014
Toshiki NOGUCHI
 
サーバを作ってみた (2)
サーバを作ってみた (2)サーバを作ってみた (2)
サーバを作ってみた (2)
SeungYong Yoon
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能hitode909
 
C83 λカ娘の販促にやってきました
C83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきました
C83 λカ娘の販促にやってきましたKiwamu Okabe
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
Kiyo Tsunezumi
 
Webスライスから始めるmicroformats
Webスライスから始めるmicroformatsWebスライスから始めるmicroformats
Webスライスから始めるmicroformats
Koji Ishimoto
 
Mongo db使ってみよう
Mongo db使ってみようMongo db使ってみよう
Mongo db使ってみよう
Oda Shinsuke
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
Yuya Takeyama
 

What's hot (20)

Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
Go言語のスライスを理解しよう
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しよう
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014
 
サーバを作ってみた (2)
サーバを作ってみた (2)サーバを作ってみた (2)
サーバを作ってみた (2)
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
C83 λカ娘の販促にやってきました
C83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきました
C83 λカ娘の販促にやってきました
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
 
Webスライスから始めるmicroformats
Webスライスから始めるmicroformatsWebスライスから始めるmicroformats
Webスライスから始めるmicroformats
 
Mongo db使ってみよう
Mongo db使ってみようMongo db使ってみよう
Mongo db使ってみよう
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 

Viewers also liked

Gitのおさらい
GitのおさらいGitのおさらい
Gitのおさらい
Koji Iwazaki
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法
Koji Iwazaki
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニング
Yuichi Matsuo
 
Business plan presentation_format (1)
Business plan presentation_format (1)Business plan presentation_format (1)
Business plan presentation_format (1)
BHARAT LIMAYE
 
Double page Process
Double page ProcessDouble page Process
Double page Process
courtneyhughes
 
最重要的業務員
最重要的業務員最重要的業務員
最重要的業務員shiehrm
 
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
Denis Mpagaze
 
Ctrmc answers to osha nprm questions 7 10 final
Ctrmc answers to osha nprm questions 7 10 finalCtrmc answers to osha nprm questions 7 10 final
Ctrmc answers to osha nprm questions 7 10 finalDaddy DeVinney
 
Creating a college support team
Creating a college support teamCreating a college support team
Creating a college support team
Atty Garfinkel
 
Presentation1
Presentation1Presentation1
Presentation1
juliaharvey
 
Gr
GrGr
Olgu
OlguOlgu
Olgu
edoktor
 
Worksheet sem.2 part 1
Worksheet sem.2   part 1Worksheet sem.2   part 1
Worksheet sem.2 part 1
Arsyi Nurani
 
Audience Research
Audience ResearchAudience Research
Audience Research
Nowar Yacoub
 
Question 5
Question 5Question 5
Question 5
courtneyhughes
 
My lx business_executive_program_v4
My lx business_executive_program_v4My lx business_executive_program_v4
My lx business_executive_program_v4
alayonruth
 
Cipaganti [ whats next ] Focus or Diversify?
Cipaganti [ whats next ] Focus or Diversify?Cipaganti [ whats next ] Focus or Diversify?
Cipaganti [ whats next ] Focus or Diversify?
Frisca Listyaningtyas
 
Fairtrade quiz
Fairtrade quizFairtrade quiz
Fairtrade quiz
Aoife Nic An Bhaird
 

Viewers also liked (20)

Gitのおさらい
GitのおさらいGitのおさらい
Gitのおさらい
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニング
 
Business plan presentation_format (1)
Business plan presentation_format (1)Business plan presentation_format (1)
Business plan presentation_format (1)
 
Pdf radar1
Pdf radar1Pdf radar1
Pdf radar1
 
Double page Process
Double page ProcessDouble page Process
Double page Process
 
最重要的業務員
最重要的業務員最重要的業務員
最重要的業務員
 
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
Laurian Victor on , "The Impact of Facebook Usage on SAUT Youth Moral Behavior"
 
Ctrmc answers to osha nprm questions 7 10 final
Ctrmc answers to osha nprm questions 7 10 finalCtrmc answers to osha nprm questions 7 10 final
Ctrmc answers to osha nprm questions 7 10 final
 
Creating a college support team
Creating a college support teamCreating a college support team
Creating a college support team
 
Presentation1
Presentation1Presentation1
Presentation1
 
Gr
GrGr
Gr
 
Rad u predstavničkom tijelu jl(r)s
Rad u predstavničkom tijelu jl(r)sRad u predstavničkom tijelu jl(r)s
Rad u predstavničkom tijelu jl(r)s
 
Olgu
OlguOlgu
Olgu
 
Worksheet sem.2 part 1
Worksheet sem.2   part 1Worksheet sem.2   part 1
Worksheet sem.2 part 1
 
Audience Research
Audience ResearchAudience Research
Audience Research
 
Question 5
Question 5Question 5
Question 5
 
My lx business_executive_program_v4
My lx business_executive_program_v4My lx business_executive_program_v4
My lx business_executive_program_v4
 
Cipaganti [ whats next ] Focus or Diversify?
Cipaganti [ whats next ] Focus or Diversify?Cipaganti [ whats next ] Focus or Diversify?
Cipaganti [ whats next ] Focus or Diversify?
 
Fairtrade quiz
Fairtrade quizFairtrade quiz
Fairtrade quiz
 

Similar to Symfony2からdoctrine mongo db odmを使ってみる

Symfony2#5 LT
Symfony2#5 LTSymfony2#5 LT
Symfony2#5 LT
Masato Koizumi
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
Yu Ito
 
CocoaPodsのはなし
CocoaPodsのはなしCocoaPodsのはなし
CocoaPodsのはなし
Hironytic
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
Suguru Yazawa
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
Tom Hayakawa
 
Mongodb
MongodbMongodb
Mongodb
Satoru Mikami
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
Toru Yamaguchi
 
Clang Modules
Clang ModulesClang Modules
Clang Modules
Wataru Kimura
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Hironao Sekine
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
Midori Oge
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
Hiroshi Miura
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
Yu Ito
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
mookjp
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたtoshihirock
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
Shin Yoshida
 

Similar to Symfony2からdoctrine mongo db odmを使ってみる (20)

Symfony2#5 LT
Symfony2#5 LTSymfony2#5 LT
Symfony2#5 LT
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
CocoaPodsのはなし
CocoaPodsのはなしCocoaPodsのはなし
CocoaPodsのはなし
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
Mongodb
MongodbMongodb
Mongodb
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Clang Modules
Clang ModulesClang Modules
Clang Modules
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみたFuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
 

Recently uploaded

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 

Recently uploaded (10)

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 

Symfony2からdoctrine mongo db odmを使ってみる

  • 1. Symfony2から Doctrine MongoDB ODMを 使ってみる 2011-1-15 Symfony2勉強会 岩崎 晃司(@madapaja)
  • 2. 自己紹介  名前 : 岩崎晃司  誕生日 : 1981/11/6 (ぎりぎり20代)  twitter : @madapaja  blog : http://d.hatena.ne.jp/ja9/ 仕事では主にPHPを使ってます。 SymfonyもMongoDBも、初心者ですが、、、
  • 4. MongoDB  ドキュメント指向データベースに属する DBです。  詳細は割愛します。
  • 5. Doctrine MongoDB ODM  ODM=Object Document Mapper  Doctrine2のMongoDB版みたいなもの です  Symfony2でサポートされています  Sandboxをダウンロードすると、もれなく ついてきます
  • 6. 環境を用意する  Symfony2が動く環境を用意します  Symfony2のSandboxを用意します  MongoDBが必要です  PHP Mongo Extensionが必要です  sudo pecl install mongo でインストール  php.ini に extension=mongo.so を追記  httpdなどの再起動が必要かもね
  • 7. 使い方 Doctrine2 ORM とほぼ同じように使えるよ 1. Doctrine MongoDB Bundleを有効に 2. configに設定を追加 3. Document(ORMでいうEntity)クラスを 作る 4. Let's access!
  • 8. 1.Doctrine MongoDB Bundleを有効に  Sandboxのapp/AppKernel.php class AppKernel extends Kernel { : public function registerBundles() { $bundles = array( : // enable third-party bundles : new Symfony¥Bundle¥DoctrineMongoDBBundle¥ DoctrineMongoDBBundle(), // ↑コメントアウトを解除し、有効に :
  • 9. 2. configに設定を追加  app/config/config.yml  最小限の設定 ## MongoDB ODMの設定を追記。 doctrine_odm.mongodb: mappings: HelloBundle: ~ MongoDB ODM を 使用するバンドル名
  • 10. 2. configに設定を追加  app/config/config.yml  最小限の設定 ## MongoDB ODMの設定を追記。 doctrine_odm.mongodb: mappings: HelloBundle: ~ MongoDB ODM を 使用するバンドル名 最小限の設定の場合、mongodb://localhost:27017の defaultデータベースに接続するよ
  • 11. 2. configに設定を追加  app/config/config.yml  間違いが起きないように、 最低限以下のような設定をした方が いいと思います。 ## MongoDB ODMの設定を追記。 doctrine_odm.mongodb: mappings: HelloBundle: ~ server: mongodb://localhost:27017 default_database: my_db_name
  • 12. 3.Documentクラスを作る  HelloBundle/Document/User.php  Annotationは@mongodb: で始める namespace Application¥HelloBundle¥Document; /** @mongodb:Document(collection="users") */ class User { /** @mongodb:Id */ protected $id; /** @mongodb:Date */ protected $create_at; /** @mongodb:String */ protected $name; // getter & Setter … … }
  • 13. 3.Documentクラスを作る  ちょっとした事。  いつでも@mongodb: /** * @mongodb:Indexes({ * @mongodb:Index(keys={"name"="asc"}) * }) */ 油断して忘れない  間違って、@mongodb:Timestamp を利用しない /** @mongodb:Date */ protected $at; 普通の日時保存にはDate型を使う
  • 14. 4. Let's access!  HelloBundle/Controller/HelloController.php  落ち着いて、DocumentManagerを取得したら // MongoDB ODM DocumentManager を取得 $dm = $this ->get('doctrine.odm.mongodb.document_manager');
  • 15. 4. Let's access!  HelloBundle/Controller/HelloController.php  煮るなり、焼くなりご自由に! // 1.保存 // Userドキュメントを生成し、データを入れる $user = new Application¥SasayakiBundle¥Document¥User(); $user->setName('madapaja'); $dm->persist($user); // データを入れて $dm->flush(); // 保存
  • 16. 4. Let's access!  HelloBundle/Controller/HelloController.php  煮るなり、焼くなりご自由に! // 2.取得 $sasayaki = $dm ->getRepository( ‘Application¥SasayakiBundle ¥Document¥User') ->findByName("madapaja") ->getResults();
  • 17. 4. Let's access!  HelloBundle/Controller/HelloController.php  煮るなり、焼くなりご自由に! // 3.更新 $sasayaki = $dm ->createQuery( 'Application¥SasayakiBundle ¥Document¥User') ->findAndModify() ->field('name')->equals('madapaja') // 更新します ->update() ->field('name')->set('まだぱじゃ') ->execute();
  • 18. Annotationで設定したIndexの作成  ID以外をインデックスされるように、 @mongodb:Index アノテーションなどを 指定している場合、 // Indexを作成 $dm->getSchemaManager() ->ensureIndexes(); などとして、Indexを作りましょう。
  • 19. 最後に  MongoDBの開発は非常に活発です。  Shardingやレプリケーション、耐障害性 などの向上、機能追加も予定(ver.1.7系、 1.8~)されているようで、より運用しやす いプロダクトに成長し、使える幅が広が るのではないかと期待しています。  面白い情報などありましたら、twitterなど で教えてください!  MongoDB楽しい!
  • 20. 宣伝 アジア初となるMongoDBのカンファレンス Mongo Tokyo が開催されます! 3月1日(火) 13:00~19:30 品川シーサイド楽天タワーにて 開発元である10genのエンジニアを含む講演が行われます。 詳細は: http://mongodb.jp/ からリンクしてます