【发布时间】:2019-01-20 13:13:33
【问题描述】:
我的数据库中有 3 个表,结构如下:
'projects'
-> id
-> name
'tasklists'
-> id
-> project_id
'tasks'
-> id
-> project_id
-> tasklist_id
我为每张桌子制作了一个模型。
- Project.php
- Tasklist.php
- Task.php
我的目标是在我的视图中打印每个任务列表以及特定项目的所有任务。
举个例子:
Project name: Stackoverflow
-> Tasklist #1
-> Task #1
-> Task #2
-> Task #3
-> Tasklist #2
-> Task #4
-> Task #5
-> Tasklist #3
-> Task #6
我对 Laravel 中两个表之间的简单关系有一点了解。但我不知道如何利用 3 个表的关系。
有人可以给我一些提示/提示吗?哪种关系类型最适合使用?我该如何写出来,我应该把它放在哪个模型中?我知道我脑子里的逻辑,但我不知道如何用代码写出来。
编辑 -> 这就是我现在所拥有的。
任务列表
public function projects()
{
return $this->belongsTo('App\Project');
}
public function tasks()
{
return $this->hasMany('App\Task', 'tasklist_id');
}
任务.php
public function tasks()
{
return $this->belongsTo('App\Tasklists');
}
项目模型
public function Tasklists()
{
return $this->hasManyThrough(
'App\Task',
'App\Tasklists',
'project_id',
'tasklist_id',
'id',
'id'
);
}
现在当我打印 dd(Project::first()->tasklists);
我从我的数据库中获取所有任务(未按 project_id 或 tasklist_id 排序)。 所以我想我离得更近了,但还没有。
问候,
迪伦
【问题讨论】:
-
task只需与tasklist关联,因为tasklist已经包含与project的关联。将task与project直接关联是多余的。 -
是的,我也想过。那是矫枉过正。你能帮我再多一点吗?
-
我对 Laravel 了解不多,如果您使用的是 MySQL,我可以直接帮助您。
-
您必须创建多对多关系,然后使用 hasManyThrough 方法访问数据。项目有许多任务列表(多对多或 1-> 多)任务列表有许多任务(多对多或 1-多取决于您的要求)
标签: php laravel eloquent foreign-keys relationship