我有以下查询似乎在第二个地方出错了(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总是相同)。
我在哪里做了一些陈述错误的错误?
答案 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查询似乎也在比较数据库中的字符串值。
我将数据库中的值修改为浮动(现在),现在查询工作正常。