如何将laravel迁移文件迁移到mongodb

时间:2018-03-13 12:14:42

标签: php mongodb laravel laravel-5

我对laravel和monogo db的初学者都很新。我一直试图在我的laravel项目中连接mongodb集群的mongodb图集。 但是,当我尝试迁移laravel迁移文件时,即使我将默认连接更改为mongodb,也显示错误,指出mysql错误。 谁能告诉我如何解决这个问题并将当前项目迁移到mongodb?

PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", [])

  1   PDOException::("SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
")
      C:\Users\admin\Desktop\test\test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php : 68

      C:\Users\admin\Desktop\test\test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php : 68

由于laravel不允许mongodb开箱即用,所以我使用的是mongodb包https://github.com/jenssegers/laravel-mongodb 我还想提一下,根据文档,我在我的php中安装了monngodb。我可以在phpinfo()页面上看到mongodb的确认。我的设置如下:

我的.env

        DB_CONNECTION="mongodb"
        DB_MONGO_PORT=27017
        DB_MONGO_DATABASE=test
        DB_MONGO_DSN="mongodb+srv://<USERNAME>:<PASSWORD>@cluster0-
***.mongodb.net/test"

我的config / database.php

 'default' => env('DB_CONNECTION', 'mongodb'),

'mongodb' => [
            'driver'   => 'mongodb',
            'dsn' => env('DB_MONGO_DSN'),
            'database' => env('DB_MONGO_DATABASE'),
        ],

我的用户迁移文件

use Illuminate\Support\Facades\Schema;
//use Illuminate\Database\Schema\Blueprint;
use Jenssegers\Mongodb\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{

    protected $connection = 'mongodb';
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

4 个答案:

答案 0 :(得分:2)

DB_CONNECTION=mongodb放在 .ENV 文件中 同时从 MOGN0_DSN 中删除引号,并确保调用php artisan config:cache转储自动加载的配置文件

答案 1 :(得分:1)

尝试.env文件

DB_CONNECTION=mongodb

没有qoutes

答案 2 :(得分:1)

我不确定为什么它没有使用默认连接设置为mongodb,但我之前遇到过这个问题。我遇到的问题是迁移中的onclick="showDiv('detailInformation2')" 属性是无用的。我不得不做以下事情;

connection

Schema::connection($this->connection)->create('collections', function (Blueprint $table) { $table->increments('id'); $table->index('slug'); $table->index('world_id'); $table->unique(['world_id', 'slug']); $table->timestamps(); }); 应该适合你。

答案 3 :(得分:0)

试试这个包。

它易于使用。

https://packagist.org/packages/jenssegers/mongodb