【发布时间】:2015-03-27 05:59:47
【问题描述】:
我有一个这样的表格布局:
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 不会被退回。当然,我也需要添加风味。
然后我想创建一个数组,例如 {'Item 1 1kg', 'Item 2 2.1kg', 'Item 3 250g', 'Item 3 1kg'}
有什么想法吗?我有点觉得我做错了加入。帮助将不胜感激!
更新:感谢下面的 cmets,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 是的,谢谢! LeftJoin 帮了大忙。我现在的问题是将两者结合起来。我已经更新了我的问题。
标签: php mysql database laravel