Laravel 5.3 $追加不工作


Laravel 5.3 $appends not working

模型

的代码如下
<?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();

它不返回desc字段在$product,虽然当我做$product->desc它返回结果,但我希望该结果被附加在模型本身。

下面的代码给出了错误

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

它运行

Select desc from products...

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

我做错了什么吗?

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