laravel 4 - inner - Laravel whereRaw con parámetros no funciona?
inner join laravel eloquent (1)
De acuerdo con la documentación, esto debería funcionar:
return $query->whereRaw("lang = ''?''",array(App::getLocale()));
Pero no funciona mientras esto funciona:
return $query->whereRaw("lang = ''".App::getLocale()."''");
¿Qué estoy haciendo mal? Aquí está la documentación
$users = User::whereRaw(''age > ? and votes = 100'', array(25))->get();
No hay necesidad de poner comillas alrededor del "?" marcadores de posición. Sólo inténtalo:
return $query->whereRaw("lang = ?",array(App::getLocale()));
De la documentación PHP sobre PDO (que también debería ser válida aquí):
Para aquellos que se preguntan por qué es incorrecto agregar citas a un marcador de posición, y por qué no pueden usar marcadores de posición para nombres de tabla o columna: Existe un error común sobre cómo funcionan los marcadores de posición en las declaraciones preparadas: no se sustituyen simplemente por ) cadenas y el SQL resultante ejecutado. En cambio, un SGBD solicitado para "preparar" una declaración presenta un plan de consulta completo sobre cómo ejecutaría esa consulta, incluidas las tablas y los índices que usaría, que serán los mismos independientemente de cómo llene los marcadores de posición.
El plan para "SELECCIONAR nombre FROM mi_tabla DONDE id =: valor" será el mismo que usted sustituya por ": valor", pero el aparentemente similar "SELECCIONAR nombre FROM: tabla DONDE id =: valor" no se puede planificar, porque el DBMS no tiene idea de qué tabla realmente va a seleccionar.
Incluso cuando usa "preparaciones emuladas", PDO no puede permitirle usar marcadores de posición en ningún lugar, porque tendría que resolver lo que usted quiso decir: "Select: foo From some_table" significa ": foo" va a ser una referencia de columna, o una cadena literal?
Cuando su consulta utiliza una referencia de columna dinámica, debe incluir explícitamente una lista blanca de las columnas que sabe que existen en la tabla, por ejemplo, utilizando una instrucción switch con una excepción lanzada en la cláusula predeterminada:.