属性,默认值在模型上返回null

时间:2018-11-11 05:14:45

标签: laravel laravel-5.7

案例1:我创建了模型和迁移,用于存储有关住宿的用户评论。

型号     

protected $fillable = [
    'user_id',
    'lodging_id',
    'body',
    'status',
];

迁移:

public function up()
{
    Schema::create('reviews', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('lodging_id');
        $table->text('body');
        $table->enum('status', ['pending', 'approved', 'rejected'])->default('pending');
        $table->timestamps();
        $table->softDeletes();

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->foreign('lodging_id')->references('id')->on('lodgings')->onDelete('cascade');
    });
}

成功将数据存储到数据库后,所有属性均按预期填充。但是当我尝试调用数据时,除状态外,所有属性都返回所需的数据。当我尝试使用dd()调试检索到的数据时,结果如下(属性状态在属性&Original 中不可用)debug result

案例2 :此后,我尝试更改迁移。我将状态属性从具有默认值待处理的枚举更改为具有缺省值待处理的字符串,状态属性仍然恢复为空 迁移:

public function up()
{
    Schema::create('reviews', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('lodging_id');
        $table->text('body');
        $table->string('status')->default('pending');
        $table->timestamps();
        $table->softDeletes();

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->foreign('lodging_id')->references('id')->on('lodgings')->onDelete('cascade');
    });
}

案例3 :我将状态属性从具有默认值的字符串更改为具有默认值的字符串,然后返回的数据符合预期(所有属性均从数据库返回其值) debug resul returning full attribute 迁移:

public function up()
{
    Schema::create('reviews', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('lodging_id');
        $table->text('body');
        $table->string('status');
        $table->timestamps();
        $table->softDeletes();

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->foreign('lodging_id')->references('id')->on('lodgings')->onDelete('cascade');
    });
}

问题:这是laravel的错误,还是我错过了某些事情?我的数据库版本是5.7,而laravel版本是5.7

0 个答案:

没有答案