Laravel where操作符上的原始绑定

时间:2019-03-14 11:28:14

标签: mysql sql laravel

所以我有一个查询,其中取决于用户输入的内容,列,运算符和比较会有所不同。例如,如果用户选择过滤包含字符串一部分的名称列。

当我尝试绑定运算符时出现问题。这是查询

$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而不是?进行硬编码,它可以工作,但是我不能这样做,因为操作员取决于用户输入

编辑:必须进行编辑,因为我发现问题与原始问题不同,但相似。

1 个答案:

答案 0 :(得分:0)

“何时”必须紧跟条件,在这种情况下,您需要替换“ adam”

CASE WHEN 'adam'