gpt4 book ai didi

php - 如何使用 hasMany 关系和 laravel 中的 hasMany 获取数据?

转载 作者:可可西里 更新时间:2023-10-31 22:50:24 27 4
gpt4 key购买 nike

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

项目表结构如下:

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

任务表结构如下:

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": [ ]
}
] },

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

谢谢

最佳答案

使用此子任务关系:

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

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

关于php - 如何使用 hasMany 关系和 laravel 中的 hasMany 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52685272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com