@boooom

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

Всем привет!

Есть товары и есть их копии

Для копий в базе есть столбик 'attach_id' - от какого товара зависит запрашиваемый товар

И если в строке указано значение для attach_id надо достать картинки по этому значению

Вот какой говнокод написал:

$item_id = $this->config['item_id'];
        $attach_id = $this->config['attach_id'];

        if($attach_id != null){
            $xgoods_id = $attach_id;
        } else {
            $xgoods_id = $item_id;
        }


$product = Goods::with([
                'ximage' => function ($query) use ($xgoods_id) {$query->where('goods_id', $xgoods_id)->orderBy('position', 'asc');},
                'ximages' => function ($query) use ($xgoods_id) {$query->where('goods_id', $xgoods_id)->orderBy('position', 'asc');}
            ])
            ->where('id', $item_id)->where('published', 1)->first();
        
        dd($product);


и модели

public function ximage(){
        return $this->hasOne('App\Http\Models\Site\Images');
    }

    public function ximages(){
        return $this->hasMany('App\Http\Models\Site\Images');
    }


проблема в том что достает картинки только для товара, где значение для attach_id == null, а если таковая имеется то ничего не находит

SQL запросы вот так получаются (достаем для товара с id 1586 - картинки по id 105

1 => array:3 [▼
    "query" => "select * from `images` where `images`.`goods_id` in (1586) and `goods_id` = ? and `images`.`deleted_at` is null order by `position` asc"
    "bindings" => array:1 [▼
      0 => 105
    ]
    "time" => 0.4
  ]
  2 => array:3 [▼
    "query" => "select * from `images` where `images`.`goods_id` in (1586) and `goods_id` = ? and `images`.`deleted_at` is null order by `position` asc"
    "bindings" => array:1 [▼
      0 => 105
    ]
    "time" => 0.35
  ]


что тут можно сделать?
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanes
@Sanes
Нормальные пацаны так не делают. Не может быть никаких копий. Если товар отличается хоть немного, то это уже другой товар. И набор прикрепленных фото тоже другой.
Всякие хотрожопые схемы потом оборачиваются кучей хлама.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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