laravel - 使用 select() 自定义 hasMany 关系查询

标签 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 关系的查询,然后该查询将正确返回事件实例的集合?

最佳答案

在您的events方法中添加过滤器,例如:

public function events()
{
    return $this->hasMany('App\Event')->select('id', 'company_id', 'name');
}

然后这样调用它:

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

重要更新:“company_id”对于公司->事件链接是必需的,否则“事件”关系始终返回空数组

关于laravel - 使用 select() 自定义 hasMany 关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745229/

相关文章:

php - Laravel 5 使用原始查询将结果获取到数组

php - 如何使用 Axios 使用经过身份验证的 API

laravel - 如果使用 whereRaw(),我应该如何清理 Laravel 查询?

Laravel Eloquent 比较列值

mysql - Eloquent : "WHERE (equals statement) AND (LIKE statement)"

laravel - 带有可选 url $param(s) 的命名路由 - Laravel 4

php - 使用 eloquent laravel 获取连接表数据

php - Laravel - 在 whereHas Closure 内动态访问模型属性

mysql - 获取每个月最常见/最频繁的值

laravel - 限制 Eloquent block