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

时间:2018-11-16 16:01:27

标签: php laravel laravel-5 eloquent

插入后检索模型数据时出现问题。以下是一个示例代码,其中用户模型已经具有其$fillable,其中包含所有必需的属性(idstate属性是以下属性的补充)。 / 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的工作方式。

2 个答案:

答案 0 :(得分:1)

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

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

这应该在创建新模型时在Model实例上设置默认值,而不必在创建数据库后再次访问数据库以获取默认值。

答案 1 :(得分:0)

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

  

$ table-> enum('state',['active','inactive'])-> default('inactive');

我也将以相同的方式存储性别。