【问题标题】:how to print sub tasks with its task list in laravel 5.2如何在 laravel 5.2 中使用其任务列表打印子任务
【发布时间】:2017-10-23 13:35:42
【问题描述】:

我在 laravel 5.2 中有项目管理工具,这个应用程序有项目创建,一个项目有任务,每个任务都有子任务。目前我也在展示项目及其任务。现在我需要显示与每个项目和任务相关的子任务。项目->任务->子任务 这是我的任务转移方法

tasks/index.blade.php

  @foreach ($project->tasks as $task)
{{ $task->task_name }}
@endforeach

这在项目/show.blade.php 中显示

<h5><b>Tasks List</b></h5>
@if($project)
  @include('tasks.index')
@endif

现在我需要在 project/show.blade.php 中显示任务的子任务

这是我的子任务存储方法

public function store(Request $request,$projectId,$taskId)
    {
        $subtask = new Subtask;
        $subtask->subtask_name = $request->input('task_name');
        $subtask->task_id = $taskId;
        $subtask->project_id = $projectId;
        $subtask->save();

      return redirect()->back()->with('info', 'Task created successfully');
}

这是子任务表

id  subtask_name  task_id  project_id
 1      abc          1         1
 2      hfy          2         1
 3      jhu          2         2
 5      lop          1         3 

如何打印与每个任务相关的子任务?

【问题讨论】:

  • 我需要一些指导...
  • 你需要一些关系见:laravel.com/docs/5.5/eloquent-relationships
  • 我在项目、任务和子任务表之间有关系
  • 然后你做类似{{ $task-&gt;subtask}}的事情来获取子任务
  • 在女巫文件中..?

标签: php mysql laravel-5


【解决方案1】:

您尚未在问题中显示您希望在哪里输出 subtasks。

但是,您基本上希望在使用视图中的数据之前在控制器中预先加载您的关系,以避免为每个任务和子任务执行单独的查询。

// ProjectController
// You may have other conditions, etc on your query. But you want to use `with('tasks.subtasks')`
$project = Project::with('tasks.subtasks')->find(1);

// project/show.blade.php
@foreach ($project->tasks as $task)
    {{ $task->task_name }}
    @foreach ($task->subtasks as $subtask)
        {{ $subtask->subtask_name }}            
    @endforeach
@endforeach

【讨论】:

  • 我需要在项目/show.blade.php 文件中打印我的子任务,然后打印它的父任务。在我的问题中查看我的任务显示文件
  • 你能简单描述一下这段代码是什么意思吗$projects = Project::with('tasks.subtasks')->get();
  • with() 函数将急切加载模型关系(它也适用于嵌套关系)。 Laravel 将使用 WHERE id IN (...) 查询找到的所有模型来完成此操作。因此,与使用延迟加载相同数据相比,它使用更少的查询加载数据。
  • 把它放在 ProjectController 中但是发生了这个错误 语法错误,意外的 '$projects' (T_VARIABLE),期望函数 (T_FUNCTION)
  • 你把它放在你的控制器动作之一?我假设如果你已经构建了你的应用程序,你就会知道将那行代码放在哪里。
猜你喜欢
  • 2018-03-26
  • 2016-01-24
  • 2018-03-19
  • 1970-01-01
  • 2017-11-02
  • 2018-06-07
  • 2020-06-29
  • 2021-10-12
  • 2015-04-12
相关资源
最近更新 更多