Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

Laravel5.1入門その7 MongoDBにつないでみる

MongoDBをインストール。

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

PECLをインストール。

$ sudo apt-get install php-pear php5-dev

MongoDBドライバをインストール。

$ sudo pecl install mongo

mongo.soを読み込ませる。

$ sudo php5enmod mongo

Apache再起動。

$ sudo service apache2 restart

MongoDBにテストデータを手で入れる。

$ mongo

> use hoge

> db.users.insert({name: 'Taro Yamada'})
WriteResult({ "nInserted" : 1 })

> db.users.find()
{ "_id" : ObjectId("558679970ec152e181cd01e9"), "name" : "Taro Yamada" }


LaravelのMongoDBライブラリを入れる。

$ composer require jenssegers/mongodb


サービスプロバイダに追加。
config/app.php

<?php
//...

'providers' => [
  //...

  Jenssegers\Mongodb\MongodbServiceProvider::class,
];

Laravelのデータベース設定。
config/database.php

<?php
return [

    'default' => 'mongodb',

    'connections' => [
        'mongodb' => [
            'driver'   => 'mongodb',
            'host'     => 'localhost',
            'port'     => 27017,
            // 'username' => 'username',
            // 'password' => 'password',
            'database' => 'hoge',
            'options' => [
                // 'db' => 'admin' // sets the authentication database required by mongo 3
            ],
        ],
    ],
];

EloquentっぽくUserクラスを作る。
app/MongoDoc/User.php

<?php

namespace App\MongoDoc;

use Jenssegers\Mongodb\Model as Eloquent;

class User extends Eloquent {}

さっき入れたサンプルをとってみる。

app/Http/Controllers/Debug/HomeController.php

<?php
namespace App\Http\Controllers\Debug;
//...
use App\MongoDoc\User;

class HomeController extends Controller
{
    public function index()
    {
        // 全部とったり!
        // $users = User::all();
        // 簡易中間一致検索したり!
        $users = User::where('name', 'like', '%ama%')->get();
        // Collectionなので、first()で先頭を1行取り出してみたり!
        $user = $users->first();
        dd($user);
        return view('debug.index');
    }
    // ...
}

http://localhost/debug

dd()ヘルパが中身を表示してくれる。

f:id:rightgo09:20150624001507p:plain