Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 获取查询结果,具体取决于第一次查询的结果_Php_Laravel - Fatal编程技术网

Php 获取查询结果,具体取决于第一次查询的结果

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的任务项 这是我的查询代码

我有两张桌子。1个名为
的任务
具有行
[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请现在检查,您一定是在我尝试您的代码后编辑了它,因为它对我不起作用。