Задать вопрос
anton_reut
@anton_reut
Начинающий веб-разработчик

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

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

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

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

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