如何在Laravel中链接数据库关系(多个has_many?)

Pet*_*ete 14 php mysql activerecord laravel eloquent

我正在使用Laravel,这很棒,但我遇到了数据库的问题.

假设我们有三个表,如下所示:

表1:页面

id    |   route   |  title
Run Code Online (Sandbox Code Playgroud)

表2:元素

id    |   page_id   |  type
Run Code Online (Sandbox Code Playgroud)

表3:内容

id    |   element_id   |  data
Run Code Online (Sandbox Code Playgroud)

我想对页面进行单一选择,然后选择具有该页面id的所有元素,并且对于每个元素,它应该选择具有元素id的所有内容行.

我希望在Page模型中有一个静态的load_by_route($ route)函数,当调用它时,它将使用该路由加载并返回页面信息以及元素和内容,如上所述.理想情况下,它将返回包含所有这些信息的单个对象/数组.

基本上,我不确定如何将has_many()调用链接在一起,以便获得两级关系.

Col*_*mes 31

看看急切的装载.这应该做你想要的.

class Page extends Eloquent {

    public function elements()
    {
        return $this->has_many( 'Element' );
    }

}

class Element extends Eloquent {

    public function contents()
    {
        return $this->has_many( 'Content' );
    }

}

class Content extends Eloquent {}

$page = Page::with( array( 'elements', 'elements.contents' ) )->first();
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/master/eloquent-relationships#eager-loading