Laravel 4 Laravel whereRaw with parameters不起作用?

Laravel 4 Laravel whereRaw with parameters不起作用?,laravel-4,Laravel 4,根据文件,这应该是可行的: return $query->whereRaw("lang = '?'",array(App::getLocale())); 但当这起作用时,情况并非如此: return $query->whereRaw("lang = '".App::getLocale()."'"); 我做错了什么?这是文件 $users = User::whereRaw('age > ? and votes = 100', array(25))->get();

根据文件,这应该是可行的:

return $query->whereRaw("lang =  '?'",array(App::getLocale()));
但当这起作用时,情况并非如此:

return $query->whereRaw("lang =  '".App::getLocale()."'");
我做错了什么?这是文件

$users = User::whereRaw('age > ? and votes = 100', array(25))->get();

有没有必要把周围的报价?占位符。试试看:

return $query->whereRaw("lang = ?",array(App::getLocale()));
关于PDO,此处也应有效:

对于那些想知道为什么在占位符周围添加引号是错误的,以及为什么不能在表或列名中使用占位符的人: 对于预处理语句中的占位符是如何工作的,存在一个常见的误解:它们不是简单地作为转义字符串替换,而是执行结果SQL。相反,要求DBMS准备语句的DBMS会给出一个完整的查询计划,说明它将如何执行该查询,包括它将使用哪些表和索引,无论您如何填写占位符,这些表和索引都是相同的

从my_表中选择名称(其中id=:value)的计划将与替换:value的内容相同,但无法计划看似相似的从:表中选择名称(其中id=:value),因为DBMS不知道实际要从哪个表中选择

即使在使用模拟prepares时,PDO也不能让您在任何地方使用占位符,因为它必须了解您的意思:从某个表中选择:foo是否意味着:foo将成为列引用或文字字符串

当您的查询使用动态列引用时,您应该显式地以白色列出您知道存在于表中的列,例如,使用switch语句,并在default:子句中抛出异常

编辑:请小心,因为这个答案很旧,可能已经过时。请与拉威尔的文件确认