我的应用程序上的每个公司都可以存储自己的事件。
一家公司及其事件通过以下hasMany
关系而关联:
/**
* The events that belong to the company.
*/
public function events()
{
return $this->hasMany('App\Event');
}
要列出公司的事件,我使用:
Auth::user()->company->events
由于每个事件都存储了很多查询hasMany
时不需要的数据,因此我想自定义关系以仅选择id
和name
列而不是整行。
我的hasMany
关系查询类似于
DB::table('events')->where('company_id', Auth::id())->select('id', 'name')->get();
如何获取从此结果返回的集合并将其用作我的hasMany
关系的查询,然后该关系将正确返回事件实例的集合?
答案 0 :(得分:1)
在events
方法内添加过滤器,例如:
public function events()
{
return $this->hasMany('App\Event')->select('id', 'name');
}
然后将其命名为:
Auth::user()->company->events
答案 1 :(得分:-1)
怎么样
Auth::user()->company()->with('events:id,name')->get();
https://laravel.com/docs/5.8/eloquent-relationships#eager-loading
转到渴望加载特定列