Clé*_*aud 7 php laravel eloquent laravel-5 laravel-5.3
我正在使用Laravel 5.3,在模型中Post,我有一个追加属性:
/*
* toJson
*/
protected $appends = ['count'];
Run Code Online (Sandbox Code Playgroud)
而神奇的方法:
public function getCountAttribute()
{
return Offer::where('id', '=', $this->id)->count();
}
Run Code Online (Sandbox Code Playgroud)
所以,当我得到一个Post像eloquent一样的模型Post::get(),并以json为例得到返回时,我总是count在我的对象中有这个属性.
我如何指定我是否要这个或另一个附加属性?
我检查了Eloquent模型是如何序列化的,不幸的是,要附加的字段列表不会在给定模型的所有实例之间共享,我看到实现所需要的唯一方法是遍历结果集并明确启用所选属性的附加:
$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']);
}
Run Code Online (Sandbox Code Playgroud)