如何获取具有 hasMany 关系和 laravel 中的 hasMany 的数据?

How to get data with hasMany relation and hasMany in laravel?

我有两个 table(项目、任务)。

项目 table 结构如下所示:

id - title - desc - others_column
1  - title - desc - others
2  - title - desc - others

任务 table 结构如下所示:

id - title - desc - project_id - parent_id - others_column    
1  - title - desc -     1      -    null   -   others    
2  - title - desc -     1      -     1     -   others    
3  - title - desc -     2      -    null   -   others    
4  - title - desc -     2      -     3     -   others

我去查询了一下,Project Controller是这样的

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use App\Project; 
use App\Task; 

class ProjectsController extends Controller { 
    public function index(Request $request) { 
        $projects = new Project; 
        $projects = $projects->with('tasks'); 
        $projects = $projects->get();   
   }
}

项目模型如下所示:

use Illuminate\Database\Eloquent\Model; 
class Project extends Model { 
    public function tasks() {
        return $this->hasMany('App\Task');
    }
} 

我得到的结果如下所示:

{  
  "id":1,
  "title":"title",
  "desc":"desc",
  "tasks":[  
     {  
        "id":1,
        "title":"Title",
        "desc":"Desc",
        "todo_project_id":1, 
        "parent_id":null, 
     }
     {  
        "id":2,
        "title":"Title",
        "desc":"Desc",
        "todo_project_id":1, 
        "parent_id": 1, 
     }
  ] },

但我希望得到的结果如下所示:

  {  
  "id":1,
  "title":"title",
  "desc":"desc",
  "tasks":[  
     {  
        "id":1,
        "title":"Title",
        "desc":"Desc",
        "todo_project_id":1, 
        "parent_id":null, 
        "subtasks": [
           {  
              "id":2,
              "title":"Title",
              "desc":"Desc",
              "todo_project_id":1, 
              "parent_id": 1, 
           }, 
           {  
              "id":3,
              "title":"Title",
              "desc":"Desc",
              "todo_project_id":1, 
              "parent_id": 1, 
           },
        ]
     },
     {  
        "id":4,
        "title":"Title",
        "desc":"Desc",
        "todo_project_id":2, 
        "parent_id":null, 
        "subtasks": [ ]
     }
  ] }, 

现在任何人都可以帮助我获得正确的结果。

谢谢

使用这个subtasks关系:

class Task extends Model { 
    public function subtasks() {
        return $this->hasMany(self::class, 'parent_id')->with('subtasks');
    }
}

$projects = Project::with('tasks.subtasks')->get();