【发布时间】:2019-02-19 16:32:20
【问题描述】:
如果我有一些模型,具有非默认功能(如软删除或自定义 id 名称)并想从中创建一个迁移文件,其中包含所有这些属性?所以这是我的模型:
class Test extends Model
{
use SoftDeletes;
protected $primaryKey = 'test_id';
protected $table = 'my_flights';
protected $dates = ['deleted_at'];
}
我希望我的迁移文件基于它。但是,当我使用命令php artisan make:migration create_test(s)_table(我尝试了test 和tests)以及参数--create 或--table 时,我得到了迁移文件,因为没有任何模型:
class CreateTestTable extends Migration
{
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
} ...
【问题讨论】:
-
Laravel 没有原生支持,但可能有第三方包。
-
@JonasStaudenmeir 所以默认情况下我应该两次跟踪相同的属性:一个在模型文件中,一个在迁移文件中?在这种情况下,如果我在模型中设置自定义主键名称并在迁移文件中设置其他名称(抱歉,我是新手,还没有自己测试过)怎么办?
-
是的,你必须自己保持同步。
-
通常您不需要“跟踪”模型的属性,因为 Model 类将直接从数据库元数据中获取大部分属性。 Eloquent ORM 就是约定优于配置。您只需要对模型添加特殊条件,例如不遵循约定的属性和相关的数据类型转换。
-
@Malta 嗯.. 感谢您的提示。我不知道我必须在我的模型中只放入不符合约定的属性。现在我需要重新考虑使用
eloquent))。
标签: php laravel orm eloquent migration