插入后检索模型数据时遇到问题。下面是一个示例代码,其中用户模型已经有了包含所有所需属性的$fillable
(id
和state
属性是以下属性的附加属性(。
$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("活动"(;
我也会以同样的方式存储性别。