我有一个表结构,其中包含多个连接。
nodes -< node_template >- templates -< placeholder_template >- placeholder
我使用
belongsToMany
方法设置了节点,模板和占位符模型,以通过连接表链接主表。例如
public function byFileMakerIdWithTemplates($id){
return $this->node->with('templates')->where('internal_id', '=', $id)->firstOrFail();
}
有没有一种方法能够雄辩地选择多个级别的子节点?
即,有没有一种方法可以查询特定的
node
记录并获取template
子记录和模板的placeholder
记录?就像是:public function byFileMakerIdWithTemplates($id){
return $this->node->with('templates')->with('placeholders')->where('internal_id', '=', $id)->firstOrFail();
}
我知道我可以使用
DB
门面来编写mysql查询,我需要使用JOIN
子句来获取所有数据,或者编写代码以查找具有所有模板的节点,然后遍历每个模板以找到占位符,但是如果有一种方法可以以多维数组的形式干净地抓取所有占位符,那就太好了。 最佳答案
您可以使用.
点语法来渴望加载深度嵌套的关系:
with('relationA.relationB');
所以你会写:
public function byFileMakerIdWithTemplates($id){
return $this->node->with('templates.placeholders')->where('internal_id', '=', $id)->firstOrFail();
}
关于php - 拥有多才多艺的 Eloquent ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27681808/