我正在使用Laravel 5.3,在模型Post
中,我有一个追加属性:
/*
* toJson
*/
protected $appends = ['count'];
神奇的方法:
public function getCountAttribute()
{
return Offer::where('id', '=', $this->id)->count();
}
所以,当我得到一个像Post
这样雄辩的Post::get()
模型,并以json为例获得返回时,我总是在我的对象中有这个属性count
。
如何指定我是否要这个或另一个附加属性?
答案 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()
获取模型的属性,该属性在任何追加之前返回属性数组