初期設定
1 . ComposerでMongoDBのドライバをインストールします。
$ composer require jenssegers/mongodb
2 . config/database.phpファイルで、connectionsへMongoDB接続用の新しい接続を追加します。
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', 'localhost'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE'),
'username' => env('MONGO_DB_USERNAME'),
'password' => env('MONGO_DB_PASSWORD'),
],
3 . .env
にMongoDBへの接続情報を書き加えます。\
MONGO_DB_HOST=mongo
MONGO_DB_PORT=27017
MONGO_DB_DATABASE=mongo-database
MONGO_DB_USERNAME=mongo-user
MONGO_DB_PASSWORD=password
migrationの作成
_※mongoDBのマイグレーションは必須ではありません。
DBへのデータ登録時に任意のコレクションとプロパティを作成できます。
しかし、マイグレーションファイルを作成しなければ、php artisan migrate:refersh
コマンドなどでデータ削除をしたりすることが出来ません。
mySQLと併用しながらmongoDBにアクセスするにはconnection('mongodb')
と指定することによって、mongoDBの操作ができます。
config/database.phpファイルのdefaultプロパティでmysqlが指定されているので、mysqlへは今まで通り操作できます。
(例)migration (testテーブルの作成)
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class Test extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// ↓ここ
Schema::connection('mongodb')->create('test', function (Blueprint $collection) {
$collection->string('name');
$collection->string('email')->unique();
$collection->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mongodb')->dropIfExists('test');
}
}
Modelの作成
mongoDBもModelを使用してデータを取得することが出来ます。
- modelの作成
$ php artisan make:model mongo/Test
2 . 作成したModelでどのDBを使うかを指定
protected $connection = 'mongodb';
3 . 今まで通り$fillable
などの設定を行う
MYSQLとのクエリビルダの違い
基本的にはMySQLの時と同じように操作することができます。
// IDが`6409645ad2771f75080f7b97`のユーザーを取得
$user = User::find('6409645ad2771f75080f7b97'); // ObjectId
// ユーザーの作成
User::create([
'hoge' => hoge,
]); // created_at, updated_atも自動で入ります。(ただしUTC)
詳しくはライブラリのREADMEを参照してください。
https://github.com/jenssegers/laravel-mongodb#eloquent
GUI操作を行うには?
1 . こちらをインストール https://www.mongodb.com/try/download/shell
2 . New connection → 接続情報を入力する
- General
- Host: 127.0.0.1:27017
- Authentication
- UserName: mongo-user
- Password password
3 . Connectをクリック
4 . admin, config, localの3つのDBが表示されれば成功