渴望加载与子查询连接的关系

Eager load a relationship with subquery join

我必须将与另一个 table 和 return 有关系的 table 加入到我的可读数据视图中,并为每个用户显示正确的数据。这是我在控制器中的代码。

这有效,但是关系中的数据丢失了,我做错了什么?

    $GetUsers = User::groupBy('id');

    $all = OngoingTasks::with(['tasksdata', 'taskstatus'])->joinSub($GetUsers, 'users', function ($join) {
        $join->on('ongoing_tasks.user_id', '=', 'users.id');
    })->get();

OngoingTasks 与 taskstatus 具有一对多关系,与 taskdata 具有一对一关系。

用户有一对多的 OngoingTasks。

如果 OngoingTask 属于一个用户,则在 OngoingTask 模型中添加:

public function user()
{
    return $this->belongsTo(User::class);
}

您可以将查询更改为:

OngoingTasks::with(['tasksdata', 'taskstatus', 'user'])->get();

如果你想根据用户 ID 获取 OngoingTasks,即使上面的方法会做同样的事情,但以防万一你过滤几个用户,改为这样做:

$userIds = User::pluck('id');

$all = OngoingTasks::with(['tasksdata', 'taskstatus', 'user'])->whereIn('user_id', $userIds)->get();