Laravel Model Create方法返回不完整的字段模型实例



插入后检索模型数据时遇到问题。下面是一个示例代码,其中用户模型已经有了包含所有所需属性的$fillable(idstate属性是以下属性的附加属性(。

$values = ['firstname' => 'Nick', 'lastname' => 'King', 'gender' => 'male' ];
$createdUser = User::create( $values );

这是迁移代码:

Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('firstname', 60);
$table->string('lastname', 60);
$table->string('gender', 6);
$table->string('state', 20)->default('inactive');
$table->timestamps();
});

当以JSON的形式发回$createdUser时,我注意到state属性不存在。它确实存在于具有默认值的迁移中,也存在于模型$fillable中,但不存在于$hidden属性中。那怎么了?

这是因为在返回的模型中没有插入带有默认值的字段的错误吗?还是这只是Laravel的工作方式。

在模型上提供默认值的另一种方法是将$attributes属性添加到Model类中:

protected $attributes = ['state' => 'inactive'];

这应该在创建新模型时设置Model实例的默认值,而无需在创建后再次访问数据库即可获得默认值。

枚举字段应该有预定义的值:

$table->enum("状态"、["活动"、"非活动"](->default("活动"(;

我也会以同样的方式存储性别。

相关内容

  • 没有找到相关文章

最新更新