Связь много ко многим и результат с подмассивом

Всё что касается построения API
Ответить
Tpona
Сообщения: 222
Зарегистрирован: 2011.06.05, 19:00

Связь много ко многим и результат с подмассивом

Сообщение Tpona »

Доброго дня!

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

Бэк для приложения со след-щими сущностями:

Склад Storage (id, article, ...)
Наличие Stock (id, article, position, ...)
Связь: один Storage ко многим Stock

Пользователи User (id, ...)
Закладки bookmarks (user_id, article)
Связь: много User ко многим Storage через bookmarks

Нужно выбрать для пользователя все закладки. Это просто

Код: Выделить всё

        return $this->hasMany(Storage::className(), ['article' => 'article'])->viaTable('favorite', ['user_id' => 'id']);
Но нужно еще задействовать таблицу Stock так как нужно вывести позиции на которых размещен товар. Один и тот же товар может быть размещен в разных местах поэтому на одну запись Storage может быть несколько Stock.

Мне клиенту нужно отправить все закладки + позиции для каждой, причем товар может не быть в наличии, либо быть в наличии как писал выше на 2 и более местах.

То есть нужно вернуть что-то типа:

Код: Выделить всё

{
 id:1, // из таблицы Storage
 name: 'Товар 1', // из таблицы Storage
 position:['полка 1'], // из таблицы Stock
},
{
 id:2,
 name: 'Товар 2',
 position: ['полка 2', 'полка 3'],
},
{
 id:3,
 name: 'Товар 3',
 position: [],
},
Поможите люди добрые ) сообразить что тут можно сделать?
Как собрать такой запрос, да так чтобы вернуть клиенту с подмассивом позиций, да еще и с постраничной навигацией, я так понимаю в ActiveDataProvider все это ?
Tpona
Сообщения: 222
Зарегистрирован: 2011.06.05, 19:00

Re: Связь много ко многим и результат с подмассивом

Сообщение Tpona »

Со связями как раз все ок, выборка всех закладок работает.
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Связь много ко многим и результат с подмассивом

Сообщение SiZE »

Tpona писал(а): 2017.06.01, 13:52 Со связями как раз все ок
Где же ок, если вы из Storage не можете Stock получить?
Ответить