@atachrus

Не могу составить корректный запрос что бы получить данные через промежуточную таблицу?

Структура DB
ORDERS:
id
status_id
.....


ORDER_ITEMS:
id
order_id
.....


SCHEDULE_SLOTS
id
order_item_id
......

Как мне у модели SCHEDULE_SLOTS, сделать отношение к ORDERS через ORDER_ITEMS?
// Отношение «один-к-одному» без проблем
public function getOrderItem() {
    return $this->hasOne('ModelOrderItem', 'id', 'order_item_id');
}

// А вот тут начинаются трудности
public function getOrder() {
    return $this->hasOneThrough('ModelOrder', 'ModelOrderItem',  ..... );
}


Получить саму информацию то на самом деле я могу, если указать отношение в ORDER_ITEMS:
public function getOrderItem() {
    return $this->hasOne('ModelOrderItem', 'id', 'order_item_id')->with(['getOrder']);
}

Но у меня конечная задача, делать выборку SCHEDULE_SLOTS, указав условия по полям именно в ORDERS. Т.е. грубо говоря у меня вот такой код выборки, но самих отношений getOrder, нет.
$returnData = ModelScheduleSlots::with(['getOrderItem', 'getOrder'])
            ->whereHas('getOrder', function ($q) {
                $q->where('status_id', 1);
            });


Ну или пока не поздно структуру DB можно подкорректировать. Главное понять что.
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы