Как в laravel добавить условие для вложенного отношения?

Привет, есть следующие модели:

class Page extends Model {
    protected $with = ['blocks'];

    public function blocks() {
        return $this->belongsToMany('App\Block');
    }
}

class Block extends Model {
    protected $with = ['fields'];

    public function fields() {
        return $this->hasMany('App\Fields');
    }
}

class Field extends Model {
    protected $with = ['data'];

    public function data() {
        return $this->hasOne('\App\Data');
    }
}


И есть контроллер в котором я выбираю данные:
public function get() {
    $page_id = 1;
    $data = Page::find($page_id);
}


В результате получаю такую структуру:

Страница
    - Блок 1
        - Поле 1
            - Тестовые данные
        - Поле 2
            - Еще данные
    - Блок 2
        - Поле 1
            - Другие данные


Блок может принадлежать нескольким страницам.
Конкретное поле принадлежит конкретному блоку.
А вот данные, хранящиеся в этом поле должны быть привязаны к полю и к странице одновременно.

То есть мне нужо передать в функцию data() модели Field переменную $page_id
Что бы в результате получилось примерно так:

public function data() {
    return $this->hasOne('\App\Data')->where('page_id', '=', $page_id);
}

Подскажите, пожалуйста, как это сделать?
  • Вопрос задан
  • 1090 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы