Laravel5.2 Mongoを使えるように設定する

  • このエントリーをはてなブックマークに追加
  • Pocket

あまり日本語の文献がなかったので、LaravelでMySQLとMongoDBを同時に使えるように設定する方法のまとめ。

正直Laravel側の設定はとっても簡単。
ドライバとライブラリをインストールする方がよっぽど大変だった。。。

環境

  • Ubuntu 14.04
  • Laravel 5.2
  • PHP 5.5.9
  • Nginx 1.4.3
  • MongoDBライブラリ jenssegers/mongodb

やること

  1. 必要なパッケージをインストール
  2. PHPのMongoDBドライバをインストール
  3. ComposerでLaravelのMongoDBライブラリを入れる
  4. ライブラリをLaravelで使えるように設定する

必要なパッケージをインストール

PECLでPHPのMongoDBドライバを入れるのでpearをインストール。

php5-mongoは任意。

自分でphp.iniにextensionを追加してもいいし、mods-availableにmongo.iniを作ってシンボリックリンクを貼ってもおk。

php5-mongoで/etc/php5/mods-available/mongo.ini が作成されるわけだが、中身を以下に書き換えとく。

こうしないと「ドライバが見つからない」というエラーになる。

stack overflow:Class ‘MongoDB\Driver\Manager’ not found
http://stackoverflow.com/questions/35920568/class-mongodb-driver-manager-not-found

PHPのMongoDBドライバをインストール

peclでインストールするパッケージに注意。

mongomongodb では別のモノになる。

jenssegers/mongodbで必要なのは mongodb の方。

インストール時に以下のエラーが出る場合はコチラを参照

stack overflow:Error installing php mongo driver after php5 upgrade
http://stackoverflow.com/questions/34086590/error-installing-php-mongo-driver-after-php5-upgrade

ComposerでLaravelのMongoDBライブラリを入れる

これまたエラーが出る場合はコチラを試すといいかもしれない。

ライブラリをLaravelで使えるように設定する

サービスプロバイダーに登録

ついでにクラスエイリアスにも追加して簡単に呼べるようにする。

config/app.php

モデルの作成

LaravelはデフォルトでMySQLを見に行くので、ちょっとしたおまじないをしてあげる。

app/Mongodb/Hoge.php

DB設定

database.phpのconnectionsにMongo用の記述を追加。

config/database.php

この時に’MongoDB_HOST’なんかはenvファイルと合っていればなんでもおk。
お好みで。

envファイルに下記を追加。

.env

実践

コントローラから呼び出してみる。

結果

cool.

Eloquent ORMについて

さっきはクエリビルダだったけど、もちろんEloquentでも行ける。

しかし、スキーマレスのMongoでもLaravelのルールに則って fillable か guarded プロパティを指定しないといけない。

ただ、とっても都合のいいことに{$MongoId}があるので guarded を指定するといい感じ。

app/Mongodb/Hoge.php

enjoy !

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*