Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel中的查询_Php_Mysql_Laravel 5 - Fatal编程技术网

Php laravel中的查询

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

问题

你好!!我需要执行查询,其中我响应所有具有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()->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'。它应该会起作用。顺便说一句,我为这个问题添加了更多的解决方案,请检查。