使用Eloquent访问多个级别的多个孩子

时间:2014-12-28 23:48:13

标签: php mysql laravel laravel-4 eloquent

我有一个包含多个多对多联接的表结构。

nodes -< node_template >- templates -< placeholder_template >- placeholder

我使用belongsToMany方法设置节点,模板和占位符模型,以通过连接表链接主表。

e.g。

public function byFileMakerIdWithTemplates($id){
    return $this->node->with('templates')->where('internal_id', '=', $id)->firstOrFail();
}

有没有办法用eloquent选择多级子节点?

即,有没有办法可以查询特定的node记录并获取template子记录和模板的placeholder记录?类似的东西:

public function byFileMakerIdWithTemplates($id){
    return $this->node->with('templates')->with('placeholders')->where('internal_id', '=', $id)->firstOrFail();
}

我知道我可以使用DB Facade来编写mysql查询,我需要使用JOIN子句获取所有数据,或者编写代码来查找包含所有数据的节点&# 39; s模板,然后通过每个模板预先找到占位符,但是如果有一种方法可以在多维数组中干净地抓取它,那将是非常棒的。

1 个答案:

答案 0 :(得分:0)

您可以使用.点语法来急切加载深层嵌套关系:

with('relationA.relationB');

所以你会写:

public function byFileMakerIdWithTemplates($id){
    return $this->node->with('templates.placeholders')->where('internal_id', '=', $id)->firstOrFail();
}