Php 获取查询结果,具体取决于第一次查询的结果
我有两张桌子。1个名为Php 获取查询结果,具体取决于第一次查询的结果,php,laravel,Php,Laravel,我有两张桌子。1个名为的任务具有行[id,event\u id,title],另一个表名为任务项,具有行[id,task\u id,description,…] 我正在尝试运行一个查询,以检索事件id为x的所有任务,然后检索与上一次查询的任何结果的id匹配的所有任务项。我目前有两个独立的查询,但不知道如何将它们连接起来协同工作。我的当前代码显示了与事件关联的所有task\u项目,但它们并不与每个任务对应。我的数据库中的任务0有0个任务项,但我的代码正在任务1下显示任务0的任务项 这是我的查询代码
的任务
具有行[id,event\u id,title]
,另一个表名为任务项
,具有行[id,task\u id,description,…]
我正在尝试运行一个查询,以检索事件id
为x的所有任务,然后检索与上一次查询的任何结果的id
匹配的所有任务项。我目前有两个独立的查询,但不知道如何将它们连接起来协同工作。我的当前代码显示了与事件关联的所有task\u项目
,但它们并不与每个任务对应。我的数据库中的任务0有0个任务项
,但我的代码正在任务1下显示任务0的任务项
这是我的查询代码:
$tasks = DB::table('tasks')->where('event_id', $request->route('id'))->get();
foreach($tasks as $task)
{
$taskItemID[] = $task->id;
}
$taskItems = DB::table('task_items')->whereIn('task_id', $taskItemID)->get();
这是我的foreach循环:
@foreach($tasks as $task)
<div><b>Task # {{$task->id}}:</b> {{$task->title}}</div>
<div style="float:right;">mark as completed</div>
</div>
<div class="row" style="border: 1px solid #efefef;padding: 20px;">
@foreach($taskItems as $taskItem)
<li>{{$taskItem->description}}</li>
@endforeach
@endforeach
@foreach($tasks作为$task)
任务{{$Task->id}:{{$Task->title}
标记为已完成
@foreach($taskItems作为$taskItem)
{{$taskItem->description}
@endforeach
@endforeach
因为您不想使用模型
尝试这样的操作来创建新的子数据
$tasksData=DB::table('tasks')->where('event_id',$request->route('id'))->get();
$tasks=collect();
foreach($tasksData作为$task){
$temp=$task;
$temp->task\u items=DB::table('task\u items')->where('task\u id',$task->id)->get();
$data[]=$temp;
}
返回$tasks;
然后,您可以使用所有$task\u项目获得$tasks
要获得所有task\u项目
您可以$tasks[0]->task\u项目
你可以像这样用在刀刃上
@foreach($tasks作为$task)
任务{{$Task->id}:{{$Task->title}
标记为已完成
@foreach($task->task\u项作为$taskItem)
{{$taskItem->description}
@endforeach
@endforeach
注意我不推荐使用此功能,但在您的can中,您可以使用此功能
我不得不稍微修改一下@Kamlesh Paul的代码,但这对我来说很有效:
$tasksData = DB::table('tasks')->where('event_id', $request->route('id'))->get();
foreach ($tasksData as $task) {
$temp = $task;
$temp->task_items = DB::table('task_items')->where('task_id', $task->id)->get();
$tasks[] = $temp;
}
@KamleshPaul有没有办法在没有Laravel关系的情况下做到这一点?我不想为此创建模型,因为我不会使用它(除了此功能)。如果没有其他选择,那就这样吧。制作模型需要2分钟的时间,然后您的代码将变成$event->tasks()->with(“items”)->get()代码>或类似内容。@sirhB喂?你在吗?查询返回的是一个空数组因此查询中出现了一个小错误,我已修复了该错误,但现在我收到一个错误,错误是未定义属性:stdClass::$task\u items
这是我正在获取的数据。若有匹配的任务\项,我想得到一个包含两个任务的数组,其中包含一个内部数组。@sirhB请现在检查,您一定是在我尝试您的代码后编辑了它,因为它对我不起作用。