我必须加入一个与另一个表有关系的表,并将结果以可读数据的形式返回到我的视图,并为每个用户显示正确的数据。这是我在控制器中的代码。
这有效,但是关系中的数据丢失了,我在做什么错了?
$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具有一对多功能。
答案 0 :(得分:1)
如果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();