@leonardooleg

Laravel DB запрос с Join?

Есть таблица товара, есть таблица с цветами (красный, синий)
Нужно сделать 1 запрос и получить в товаре все цвета.
В таблице товара это поле "color_id" со значением "1,5,6"
как соединить две таблицы
$products = DB::table('products')
            ->leftJoin('categoryables', 'categoryables.categoryable_id', '=', 'products.id')
            ->leftJoin('categories', 'categoryables.category_id', '=', 'categories.id')
            ->leftJoin('brands', 'products.brand_id', '=', 'brands.id')

            ->leftJoin('colors', 'products.color_id',  '=',  'colors.id)  ///products.color_id = "1,5,6" -строка

            ->leftJoin('sizes', 'products.size_id', '=', 'sizes.id')
            ->whereIn('categoryables.category_id', $categories)
            ->orderBy('created_at', 'desc')
            ->select('products.*', 'categories.path', 'categories.title', 'brands.name_brand', 'colors.name_color', 'colors.img_color', 'sizes.brand_name_size')
            ->paginate(5);


Задавайте наводящие вопросы
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@leonardooleg Автор вопроса
сделал так
$products = DB::table('products')
            ->leftJoin('categoryables', 'categoryables.categoryable_id', '=', 'products.id')
            ->leftJoin('categories', 'categoryables.category_id', '=', 'categories.id')
            ->leftJoin('brands', 'products.brand_id', '=', 'brands.id')

            ->leftjoin('colors',DB::raw('FIND_IN_SET(colors.id,products.color_id)'),">",DB::raw("'0'"))

            ->leftjoin('sizes',DB::raw('FIND_IN_SET(sizes.id,products.size_id)'),">",DB::raw("'0'"))
            ->whereIn('categoryables.category_id', $categories)
            ->orderBy('created_at', 'desc')
            ->select('products.*', 'categories.path', 'categories.title', 'brands.name_brand', 'colors.name_color', 'colors.img_color', 'sizes.brand_name_size')
            ->paginate(5);

но в базе только последнее поле. а не масив из значениями
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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