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'); } // ... }
dd()ヘルパが中身を表示してくれる。