拉拉维尔顺序与列值错误



我正在尝试按列值对结果进行排序,但它不起作用

$users = Comment::select([
'id',
'comment',
'user_name',
'product_id',
'rating',
'country',
'status',
'pin',
'created_at',
])->where('shop_name',$shop)->where('product_id', $id)->with('images')->orderByRaw("IF(product_url = 'customer')  DESC")->orderByRaw("product_url = manually ASC")->orderBy('pin', 'desc')->orderBy('rating', 'desc')->with('pages')->get();

我添加了此代码

->orderByRaw("IF(product_url = 'customer')  DESC")

我收到此错误

"SQLSTATE[42000]: 语法错误或访问冲突: 1064 您有一个 您的 SQL 语法错误;检查与您的手册相对应的手册 MySQL 服务器版本,用于在 '( DESC 附近使用的正确语法, product_url = 手动 ASC、pindesc、ratingdesc' 在第 1 行 (SQL: 选择idcommentuser_nameproduct_idratingcountrystatuspincreated_atcommentsshop_name= 和product_id= 按 IF(product_url = '客户'( DESC, product_url 订购 = 手动 ASC、pinrating

(

MySQLIF函数接受三个参数。

此表达式无效:

IF(product_url = 'customer')

因为只向IF()函数提供了一个参数。

我们可以这样做:

IF(product_url = 'customer',1,0)

这相当于更符合ANSI标准

CASE WHEN product_url = 'customer' THEN 1 ELSE 0 END

MySQL速记也可以工作

ORDER BY product_url = 'customer'   DESC

这相当于

ORDER BY CASE
WHEN product_url = 'customer' THEN 1 
WHEN product_url IS NOT NULL  THEN 0
ELSE NULL
END   DESC            

相关内容

  • 没有找到相关文章

最新更新