У меня есть макет таблицы, как так:Laravel присоединяется в том числе там, где нет совпадения
products
id
productname
product_weights
id
productid
weight
product_flavours
id
productid
flavour
Я пытаюсь создать список всех возможных вариантов продукта. Некоторые продукты не имеют разницы в размере, некоторые из них не имеют изменения вкуса, у некоторых есть и то, и другое. Мое настоящее мышление использует соединение. Я до сих пор для моего запроса:
DB::table('product_weights')
->join('products', 'products.id', '=', 'product_weights.prodid')
->select('product_weights.value', 'products.productname')
->get();
Это дает что-то вроде полезно, var_dump дает:
[{"value":"1kg","productname":"Item 1"},{"value":"2.1kg","productname":"Item 2"},{"value":"250g","productname":"Item 3"},{"value":"1kg","productname":"Item 3"}
Вопрос заключается в том, что продукт item 5
без каких-либо изменений веса не возвращается. И, конечно же, мне нужно строить вкусы.
Затем я хочу просто сделать массив как { 'Пункт 1 1кг', 'Пункт 2 2.1kg', 'Пункт 3 250г', 'Пункт 3 1кг'}
Любые идеи? Мне кажется, что я ошибаюсь. Помощь будет оценена!
Обновление: Благодаря комментариям ниже был достигнут определенный прогресс с leftJoin
. Я могу получить желаемые результаты для веса или вкуса, но не для обоих. Код сейчас:
$product_join_weights = DB::table('products')
->leftJoin('product_weights', 'products.id', '=', 'product_weights.prodid')
->select('products.productname', 'product_weights.value')
->get();
$product_join_flavour = DB::table('products')
->leftJoin('product_flavours', 'products.id', '=', 'productattributes.prodid')
->select('products.productname', 'product_flavours.value')
->get();
Любые идеи, как их можно комбинировать?
'-> leftJoin' возможно. –
@AbhikChakraborty Да, спасибо! Ледяной помог много. Теперь мой вопрос объединяет два. Я обновил свой вопрос. – samiles