插入后检索模型数据时出现问题。以下是一个示例代码,其中用户模型已经具有其$fillable
,其中包含所有必需的属性(id
和state
属性是以下属性的补充)。 / p>
$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();
});
当以{strong> JSON 的形式发送回$createdUser
时,我注意到state
属性不存在。
它确实存在于迁移中具有默认值,并且还存在于模型$fillable
中,但不存在于$hidden
属性中。
那怎么了?
是因为没有在返回的模型中插入具有默认值的字段的错误,还是这是Laravel的工作方式。
答案 0 :(得分:1)
在模型上提供默认值的另一种方法是在$attributes
类中添加Model
属性:
protected $attributes = ['state' => 'inactive'];
这应该在创建新模型时在Model
实例上设置默认值,而不必在创建数据库后再次访问数据库以获取默认值。
答案 1 :(得分:0)
枚举字段应具有预定义的值:
$ table-> enum('state',['active','inactive'])-> default('inactive');
我也将以相同的方式存储性别。