如何在laravel中组合两个查询?

时间:2017-11-21 06:13:24

标签: php mysql laravel-5.4

QUERY1:

 $image= DB::table('products_photos')->groupBy('filename')
->get(['filename', DB::raw('MAX(id) as id')]);

这是我查询所有存储记录的单个图像的查询。

QUERY2:

$verifiedValues= priceInfo::join('productDescription', 
'productDescription.productId', '=', 'productPriceDetails.productId')
   ->join('productAdditionalInformation', 
 'productAdditionalInformation.productId', '=', 
'productPriceDetails.productId')
   ->join('products_photos', 'products_photos.productId', '=', 
'productAdditionalInformation.productId')
 ->select('productPriceDetails.SKUID','productDescription.modelName')
   **->select($image)**
        ->where('productPriceDetails.nonliveStatus', '=', 
  "QCVerified")-

>where('productAdditionalInformation.nonliveStatus','=',"QCVerified")
      ->where('productDescription.nonliveStatus','=',"QCVerified")
      ->where('products_photos.nonliveStatus','=',"QCVerified")
      ->where('productPriceDetails.listingStatus','=',"Inactive") 
     ->get();

这是我的查询,我加入了多个表,需要将query1与query2结合起来。

SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters

组合两个查询时出现

错误

1 个答案:

答案 0 :(得分:0)

恕我直言,你有两个选择。您尝试使用merge()方法合并两个结果集合,因为它是通过Laravel :: Combine two DB query objects

解释的

或者您使用联接将两个查询合并到一个查询中。要保留Builder对象(不带get()),您可以使用以下内容:

$single_query = DB::table('first_query')
    ->join(DB::raw('('.$second_query->toSQL().') alias'), 'id', 'alias.id')
    ->mergeBindings($second_query)
    ->get();

如果您没有任何参数,则可以省略mergeBindungs()子句。