Php laravel中的查询
问题 你好!!我需要执行查询,其中我响应所有具有list\u id=task id的任务,并且我还需要响应所有具有task\u id=task id的子任务。但是我不知道如何对taskID进行正确的查询 我的代码 上面的代码工作正常,我按列表id获取所有任务Php laravel中的查询,php,mysql,laravel-5,Php,Mysql,Laravel 5,问题 你好!!我需要执行查询,其中我响应所有具有list\u id=task id的任务,并且我还需要响应所有具有task\u id=task id的子任务。但是我不知道如何对taskID进行正确的查询 我的代码 上面的代码工作正常,我按列表id获取所有任务 $taskID = Tasks::latest()->where('list_id','=',$id)->get('id'); $response['subtasks'] = Subtasks::latest()->wh
$taskID = Tasks::latest()->where('list_id','=',$id)->get('id');
$response['subtasks'] = Subtasks::latest()->where('task_id','=',$taskID)->get();
目前我有这个查询,但它不起作用,我只是展示它来更好地解释我想做什么
在那个图像中你们可以看到,我在列表中有两个任务,我使用上面的代码得到它,在弹出的表单上你们可以看到第一个任务有两个子任务,和第二个任务相同,所以我想查询每个任务输出正确的子任务
$response['subtasks'] = Subtasks::latest()->where('task_id','=',4)->get();
我使用这段不正确的代码,只是为了举例说明task_id','=',4这意味着我得到id=4的任务的所有子任务。但是现在每个任务都有这些子任务。所以我需要查询自动获取任务id并正确输出
我希望你明白我想要什么
关系结构
这行代码:
$taskID = Tasks::latest()->where('list_id','=',$id)->get('id');
将返回一个集合,其中的元素是list_id=$id的任务
因此,您不能在查询中使用$taskID作为id号,如:
$response['subtasks'] = Subtasks::latest()->where('task_id','=',$taskID)->get();
相反,您可以这样做:
// this will return an array of taskID
$taskIDs = $response['tasks']->pluck('task_id');
// then you can do it like
foreach ($taskIDs as $taskID) {
$response['subtasks'][$taskID] = Subtasks::latest()->where('task_id','=',$taskID)->get();
}
//This will return a collection of all subtasks
$subtasks = Subtasks::latest()->get();
//This will turn subtasks in to group according to tasks_id
$response['subtasks'] = $subtasks->groupBy('task_id');
更新:您也可以这样使用:
// this will return an array of taskID
$taskIDs = $response['tasks']->pluck('task_id');
// then you can do it like
foreach ($taskIDs as $taskID) {
$response['subtasks'][$taskID] = Subtasks::latest()->where('task_id','=',$taskID)->get();
}
//This will return a collection of all subtasks
$subtasks = Subtasks::latest()->get();
//This will turn subtasks in to group according to tasks_id
$response['subtasks'] = $subtasks->groupBy('task_id');
对于所有与Laravel集合相关的方法,您可以参考它
关于,您能否澄清您的数据结构:列表-任务关系是1对多还是1对1?您希望的$response数组格式是什么?我只是尝试使用您的代码,但得到的数组子任务是空的。我还使用链接更新了我的问题,您可以在其中检查我的关系并输出添加代码后得到的结果。$taskID=Tasks::latest->where'list_id'、'='、$id->get'id';而且这段代码没有返回任何东西。。我得到一个错误,我必须返回数组,但返回字符串或类似的东西。我写它只是为了显示查询的结构..啊,我犯了一个错误第一个查询应该是:$taskIDs=$response['tasks']->pull'id'。它应该会起作用。顺便说一句,我为这个问题添加了更多的解决方案,请检查。