我在具有多个“ where”条件的laravel中进行查询时遇到问题。
首先,让我为您提供一些有关我的数据库外观的详细信息。
在我的网上商店中,我们的产品具有多个属性/变量,因此我们为属性和值分别设置了单独的表格(例如,男式T恤的属性包括颜色,长度,宽度等)
产品表包含:id,name,category_id
属性表包含:id,name
AttributeValues 表包含:id,name,value,attribute_id
AttributeValuesProducts 该表只是将产品ID与属性值ID结合在一起
我想从数据库中提取所有具有以下特征的产品:
到目前为止,我的情况如下:
u <= 2
上面的代码可以很好地工作,并且为我提供具有“颜色”属性和“红色”价值的产品。但是我只想获取那些另外具有属性“ length”和属性值“ 7”的文件
添加这样的另一行:
$products = DB::table('products')
->select('products.name as productName','attributes.name as attributeName','attribute_values.value as attributeValue')
->join('attribute_value_product', 'products.id', '=', 'attribute_value_product.product_id')
->join('attribute_values', 'attribute_value_product.attribute_value_id', '=', 'attribute_values.id')
->join('attributes', 'attribute_values.attribute_id', '=', 'attributes.id')
->where(['attributes.name' => 'color', 'attribute_values.value' => 'red'])
->get();
给我0个结果,但是我确定有满足上述条件的产品。
另外,我想将诸如过滤器数组之类的东西传递给查询,但是与此同时也有问题:
->where(['attributes.name' => 'length', 'attribute_values.value' => '7'])