Laravel Eloquent ORM, один ко многим, много ко многим? - PullRequest
0 голосов
/ 13 сентября 2018

Итак, у меня есть эта структура БД:

СТРАНИЦЫ

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;

, затем перебираю $ строки и нахожу компоненты.

Но разве это не способ сделать это более эффективным?

1 Ответ

0 голосов
/ 14 сентября 2018

Вам нужны отношения hasManyThrough. Это очень простой для вашего случая. Смотри здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...