0

connection('mysql2') は、私の (作業中の) 2 番目のデータベース接続です。

最初に移行すると、connection('mysql2') が期待どおりに機能し、テーブルが作成されます。

Schema::connection('mysql2')->create('brands', function(Blueprint $table)
{
    //...
});

しかし、2 番目のデータベースにテーブルをシードしようとすると、次のようになります。

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Brands;

class DatabaseSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */
    public function run()
    {
        Model::unguard();
        $this->call('BrandsTableSeeder');
        $this->command->info("Brands table seeded.");
    }
}

class BrandsTableSeeder extends Seeder
{

    public function run()
    {
        DB::connection('mysql2')->table('brands')->delete();
        Brands::connection('mysql2')->create(['brand' => 'test']);
    }
}

私が得た:

[BadMethodCallException]
Call to undefined method Illuminate\Database\Query\Builder::connection()
4

1 に答える 1

5

コードの問題は、Connection()(DB ではなく) Eloquent でメソッドを使用したことです。Eloquent にはconnection()メソッドがありません。

on()モデル(Eloquent)でメソッドを使用して接続を指定できます

$user = User::on('mysql2')->create(['brand' => 'test']);

参照http://laravel.com/docs/4.2/eloquent#basic-usage

また

on('mysql2')どこにでも書くのではなく

モデルに次のコードを書くことができます

protected $connection = 'mysql2'; 

そして今、種子は次のように書かれています

class BrandsTableSeeder extends Seeder
{
    public function run()
    {
        Brands::truncate();
        Brands::create(['brand' => 'test']);
    }
}
于 2015-03-24T10:57:58.057 に答える