使用select()

时间:2019-04-18 11:38:56

标签: laravel eloquent

我的应用程序上的每个公司都可以存储自己的事件。

一家公司及其事件通过以下hasMany关系而关联:

/**
 * The events that belong to the company.
 */
public function events()
{
    return $this->hasMany('App\Event');
}

要列出公司的事件,我使用:

Auth::user()->company->events

由于每个事件都存储了很多查询hasMany时不需要的数据,因此我想自定义关系以仅选择idname列而不是整行。

我的hasMany关系查询类似于

DB::table('events')->where('company_id', Auth::id())->select('id', 'name')->get();

如何获取从此结果返回的集合并将其用作我的hasMany关系的查询,然后该关系将正确返回事件实例的集合?

2 个答案:

答案 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

转到渴望加载特定列