Laravel查询构建器中的多个where条件问题

时间:2019-03-28 14:47:56

标签: php mysql laravel

我在具有多个“ where”条件的laravel中进行查询时遇到问题。

首先,让我为您提供一些有关我的数据库外观的详细信息。

在我的网上商店中,我们的产品具有多个属性/变量,因此我们为属性和值分别设置了单独的表格(例如,男式T恤的属性包括颜色,长度,宽度等)

产品表包含:id,name,category_id

属性表包含:id,name

AttributeValues 表包含:id,name,value,attribute_id

AttributeValuesProducts 该表只是将产品ID与属性值ID结合在一起

问题:

我想从数据库中提取所有具有以下特征的产品:

  • 属性:颜色,属性值:红色
  • 属性:带有attribute_value的长度:7

到目前为止,我的情况如下:

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'])

问题

  • 有人可以建议在上述情况下如何添加另一个where子句吗?
  • 如何将过滤器数组(上例)传递给查询,以便将根据数组元素的数量自动创建extral where子句?

0 个答案:

没有答案