0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel × MongoDB

Last updated at Posted at 2024-04-22

初期設定

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を使用してデータを取得することが出来ます。

  1. 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が表示されれば成功

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?