Laravel 5.3 $附加不起作用

时间:2016-10-11 06:35:03

标签: php laravel laravel-5 eloquent laravel-5.3

以下是模型的代码

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $appends = [
        "desc"
    ];

    protected $fillable = ['id'];

    public function getDescAttribute()
    {
        return strip_tags( $this->attributes['description'] );
    }
}

所以现在我做的时候

$product = Product::first();

它不会返回$ product中的desc字段,但是当我执行$ product-&gt; desc时它返回结果,但我希望将结果附加到模型本身。

以下代码给出了错误

$product = Product::first()->get(['desc']);

它运行

Select desc from products...

但由于desc不存在,我会收到错误。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

仅当对象序列化为数组/ JSON 时,才会附加添加到 $ appends 数组的字段。否则,在真正需要之前定义此属性是没有意义的 - 这就是当您访问 $ product-&gt; desc 时获得该值的原因。这样做是为了节省不必要的操作 - 计算自定义属性的值可能涉及一些繁重的操作,并且会延迟到真正需要的时候。