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