laravel模型使用3个表访问hasManyThrough的结果

zaqlnxep  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(164)

我有三张table:
阶段任务
| 阶段Id|任务ID|
| - ------|- ------|
| 1个|1个|
| 1个|第二章|
| 第二章|四个|
任务
| 任务ID|任务名称|默认资源|
| - ------|- ------|- ------|
| 1个|做一件事|1个|
| 第二章|做另一件事|1个|
| 三个|做些别的事情|第二章|
资源
| 身份证|姓名|
| - ------|- ------|
| 1个|工程|
| 第二章|支持|
| 第二章|销售额|
我正在尝试获取可以打印的结果集
阶段ID:1,任务名称:执行操作,资源名称:工程
阶段ID:1,任务名称:执行另一项操作,资源名称:工程
下面是我的阶段任务模型:

public function phaseTasks(){

    return $this->hasManyThrough(
        resources::class,
        tasks::class,
        'id',
        'id',
        'taskId',
        'defaultResource'
    );
}

和我的控制器:

$phaseData = phaseTasks::with('phaseTasks')->where('phaseId','1')->get();

我不能得到任务表信息,也不能弄清楚如何访问资源数据。我确实在print_r($phasedata)中看到了资源数据,我没有看到任务的东西,我猜我需要进入透视表的那部分。

***编辑

我已经知道如何获取www.example.com实体resources.name entity
$阶段数据[0]-〉阶段任务[0]-〉名称;
现在我只需要弄清楚如何获取taskName实体。

roejwanj

roejwanj1#

我不确定,但我想你的关系正好相反:它不是有许多(通过)但属于。
因此,阶段任务- task_id属于任务-默认资源属于资源
而且你的相位任务本身看起来就像一个数据透视表,但这可能是可以的。
因此,如果您同意我的假设,并按照我的方式创建关系,请尝试以下操作

PhaseTask::with('task.resource')->get();

相关问题