Laravel雄辩的ORM,一对多,多对多?

时间:2018-09-13 09:50:09

标签: php laravel orm eloquent

所以我有这个数据库结构:

PAGES

id - integer
name - string

id - integer
page_id - integer
name - string

组件

id - integer
row_id - integer
name - string

页面有很多行,每个行都有很多组件

我的页面模型具有:

public function rows() {
    return $this->hasMany('Models\Rows');
}

我的行模型具有

public function page()
{
    return $this->belongsTo('Models\Page');
}  


public function components() {
    return $this->hasMany('Models\Components');
}

我的组件模型有

public function rows()
{
    return $this->belongsTo('Models\Rows');
}  

因此,目前我有2个步骤的方法来获取页面/行中的所有组件。

首先,我找到以下行:

$rows   = PageModel::find(2)->rows;

然后遍历$ rows并找到组件。

但是,这不是提高效率的一种方法吗?

1 个答案:

答案 0 :(得分:-1)

您需要hasManyThrough关系。这对于您的情况非常基本。参见here