Laravel多个查询无效的地方

时间:2017-06-23 06:38:10

标签: php mysql laravel-5 eloquent where

我有以下查询似乎在第二个地方出错了(search_price< rrp_price)

$query = Product::where('product_name', '!=', 'product_name');

$likes = DB::table('likes')->selectRaw('product_id, COUNT(*) as count')
                  ->groupBy('product_id')
                  ->orderBy('count', 'desc')
                  ->get();
foreach($likes as $like){
   if($like == $likes[0]){
      $query->where('aw_product_id', $like->product_id');
   }
   else{
      $query->orWhere('aw_product_id', $like->product_id');
   }
}
$query->whereRaw('search_price != rrp_price');
$products = $query->get();

所以,如果我拿出' search_price< rrp_price'我得到所有产品过滤的产品,没有价格过滤,但当我离开' search_price< rrp_price'过滤器,似乎没有发生任何事情(search_price和rrp_price总是相同)。

我在哪里做了一些陈述错误的错误?

4 个答案:

答案 0 :(得分:1)

您是否尝试过<>代替!=?也许它会起作用

答案 1 :(得分:0)

您的查询中有错误修改后的查询如下:

foreach($likes as $like){
   if($like == $likes[0]){
      $query->where('aw_product_id', $like->product_id);
   }
   else{
      $query->Where('aw_product_id', $like->product_id);
   }
}

答案 2 :(得分:0)

您是否尝试过任何其他语法?像这样的东西:

->where('table.search_price', '<>', DB::raw('table.rrp_price'))

或者也许(Laravel 5 +):

->whereColumn('table.search_price','<>','table.rrp_price')

答案 3 :(得分:0)

事实证明这是因为价值观是字符串。即使我将'search_price'和'rrp_price'转换为浮点数,实际的laravel查询似乎也在比较数据库中的字符串值。

我将数据库中的值修改为浮动(现在),现在查询工作正常。