anton_reut
@anton_reut
Начинающий веб-разработчик

Как получить товар с несколькими картинками?

В общем есть две таблицы - первая содержит информацию о товаре, а вторая картинки (id, product_id, image_name), как правильно сделать запрос (вероятно JOIN какой то хитрый) чтобы в карточке товара отобразились все картинки из второй таблицы которые принадлежат этому товару?

То есть я примерно представляю что запрос к карточке товара должен вернуть $item['images'] который будет содержать Массив с перечислением картинок, и дальше мы этот массив перебираем чтобы вывести каждую картинку но какой код у запроса должен быть не понимаю пока.
Запрос товара примерно такой: SELECT id, name, desc FROM items - но как его дополнить чтобы туда попадал еще массив картинок из второй таблицы?...
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Мой вам совет - не гонитесь за крутизной а ля "я выбрал все одним запросом", в данном случае это не лучшее решение, как ни странно. Я не знаю как у вас организованна работа с коллекциями объектов, в моем случае любой объект наследуемый от базового(итем, брэнд, пост, юзер...) имеет поле $haveImages, и при формировании коллекции объект коллекции получает все id выборки в отдельный массив, а массив выбранных и инициализированных данными объектов имеет индексы равные id объекта. После чего проверяется, если у объекта $haveImages = true; вызывается метод appendImages(), который уже делает выборку по картинкам где objectid in( ... ) и по результатам раскидывает их в объект $images(это коллекция картинок) каждому объекту из коллекции итемов (или юзеров или чего другого). В итоге каждый объект имеет в составе коллекцию изображений.
Ответ написан
@grinat
Если через джойны, то вернётся столько записей сколько картинок. Юзай орм, если свой велосипед, то первый запрос обычный селект, запоминаешь id, и вторым запросом дергаешь картинки через product_id IN. Если любитель потрахаться то есть разные concat, оконные функции, можно просто свою процедуру написать
Ответ написан
Ваш ответ на вопрос

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

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