Eloquent 迁移中

Eloquent in migration

我可以在迁移中使用 eloquent 吗?问题是,我需要根据我在模型中设置的关系向数据库添加一些值。我知道我可以通过 query builder 风格和一些 SQL 或某种方式来做到这一点,但只使用 eloquent 会更容易。我不确定将来是否会出现错误。那么,在迁移中使用什么 - eloquent 或查询构建器?

如果需要,您可以在迁移中使用查询构建器甚至 Eloquent。您还可以通过迁移 运行 数据库播种器:

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });

    // Run seeders
    Artisan::call('db:seed');

    // Or run posts seeder
    Artisan::call('db:seed --class=PostsTableSeeder');

    // Or call Query Builder
    DB::table('posts')->insert([
       ['name' => 'Hiya'] 
    ]);
}

Can I use eloquent in migration?

是的,但是可能不是个好主意。

Eloquent 依赖于您的模型与数据库同步。如果有差异,您可能会发现 Eloquent 很挣扎。请记住,迁移专门用于处理数据库查询,而不是您可能从中获得的任何类型的 object-driven 数据。

我想说的是,作为一项规则,始终坚持在迁移中使用 DB。但是物理上没有什么可以阻止你使用 Eloquent.