所以我有一个查询,其中取决于用户输入的内容,列,运算符和比较会有所不同。例如,如果用户选择过滤包含字符串一部分的名称列。
当我尝试绑定运算符时出现问题。这是查询
$accounts->whereRaw("CASE WHEN 'adam' ? '%adam%' THEN name = 'adam'
WHEN 'adam' ? '%adam%' THEN name <> 'adam' ELSE name = 'bob' END", [
'like',
'not like',
]);
我得到的错误是SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? '%adam%'
如果我对like
而不是?
进行硬编码,它可以工作,但是我不能这样做,因为操作员取决于用户输入
编辑:必须进行编辑,因为我发现问题与原始问题不同,但相似。
答案 0 :(得分:0)
“何时”必须紧跟条件,在这种情况下,您需要替换“ adam”
CASE WHEN 'adam'