¿Cómo consultar columnas en mayúscula con Laravel?

Tengo una tabla llamada Cargos. De ella quiero consultar todos los registros, pero que vengan en mayúscula y compararlo con uno convertido en mayúscula. En la base de datos tengo varios registros, entre ellos uno que es Operario.

Si lo hago de la manera manual, queda de la siguiente manera:

SELECT nombre FROM cargos WHERE upper(nombre)=upper('opeRarIo')

En la base de datos funciona correctamente. Me indica que hay un registro.

Pero no logro hacerlo con Laravel. Esto es lo que intentado:

$sql = DB::table('cargos')->where('upper(nombre)', '=', 'upper("'.$req->valor.'")')->get();

y este otro:

$sql = Cargos::select(array('id'))->where('upper(nombre)', '=', 'upper("'.$req->valor.'")')->get();

Ambos me dicen:

Undefined column: 7 ERROR: no existe la columna «upper(nombre)»

1
задан 25.11.2016, 05:20
3 ответа

Я usarГ - в ilike из Постглинистого песчаника для этого типа консультаций, чтобы не знать, ли он mayГєsculas, minГєsculas или перемешанные как пример, который ты даешь:

$sql = Cargos::select('id')->where('nombre', 'ilike', $req->valor)->get();
2
ответ дан 24.11.2019, 12:23
  • 1
    спасибо брат также служит, он не знал о существовании " ilike". –  Pablo Contreras 25.11.2016, 07:16

Попытайся с:

$sql = Cargos::select(array('id'))->whereRaw('upper(nombre)', '=', 'upper("'.$req->valor.'")')->get();

Вместо where использовать whereRaw , типов Привета.

2
ответ дан 24.11.2019, 12:23
  • 1
    сейчас не бросает в меня ошибку, но меня не бросает ожидаемый результат. Как будто он не находил результат в BD. –  Pablo Contreras 25.11.2016, 05:34
  • 2
    Я рекомендую тебе устанавливать debugbar и видеть и тестировать консультации, которые он бросает тебе. –  Cristian Meza 25.11.2016, 05:43
  • 3
    я заношу в список уже я это установил, спасибо за рекомендацию, он не знал об этом инструменте, он облегчит мне много вещей :D это query, который властвует laravel " select " id" from " cargos" where upper (" opeRarIo") upper (имя) " –  Pablo Contreras 25.11.2016, 06:31
  • 4
    решенный спасибо :D, он был cuestió n синтаксиса, acá финал,----> $sql = DB:: table (' cargos')-> whereRaw (" upper (имя) = upper (' ". $ req-> valor." ') ")-> get (); –  Pablo Contreras 25.11.2016, 06:40

Используй whereRaw

AquГ - у тебя есть пример.

$sql = DB::table("cargos")->whereRaw('upper(nombre) = upper("'.$req->valor.'")')->get();

2
ответ дан 24.11.2019, 12:23

Теги

Похожие вопросы