Laravel获得没有追加属性的模型

时间:2016-10-11 14:02:33

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

我正在使用Laravel 5.3,在模型Post中,我有一个追加属性:

/*
* toJson
*/
protected $appends = ['count'];

神奇的方法:

public function getCountAttribute()
    {
        return Offer::where('id', '=', $this->id)->count();
    }

所以,当我得到一个像Post这样雄辩的Post::get()模型,并以json为例获得返回时,我总是在我的对象中有这个属性count

如何指定我是否要这个或另一个附加属性?

2 个答案:

答案 0 :(得分:6)

我检查了Eloquent模型是如何序列化的,不幸的是,要附加的字段列表不会在给定模型的所有实例之间共享,我看到实现所需要的唯一方法是遍历结果集并显式启用append for选定的属性:

$posts = Post::all();

foreach ($posts as $post) {
  // if you want to add new fields to the fields that are already appended
  $post->append('count');

  // OR if you want to overwrite the default list of appended fields
  $post->setAppends(['count']);
}

答案 1 :(得分:1)

您可以使用$post->getAttributes()获取模型的属性,该属性在任何追加之前返回属性数组