es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo utilizar bindings en una consulta whereRaw?

Tengo una tabla con dos columnas, ‘nombre’ y ‘apellido’ y quiero unir ambas tablas para poder buscar una consulta en ellas con una consulta LIKE y usando comodines %.

Pude hacer esto cuando usé un literal de cadena, sin embargo, no está funcionando cuando intento usar ligaduras posicionales. No obtengo ningún resultado.

¿Hay alguna forma de unir las dos columnas sin usar concat y una función whereRaw? ¿Y cómo escribiría correctamente la ligadura?

const searchUser = (query) => {
  const name = query.toLowerCase();
  return knex('users')
    .select('*')
    .whereRaw('concat(LOWER("first_name"), \' \' , LOWER("last_name")) LIKE \'%??%\'', [name]);
};
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes unir las dos columnas sin utilizar la función concat y whereRaw usando la función knex.raw().

    Aquí tienes cómo puedes escribir correctamente la vinculación utilizando vinculaciones posicionales:

    const searchUser = (query) => {
      const name = query.toLowerCase();
      return knex('users')
        .select('*')
        .where(knex.raw('LOWER(first_name) || \' \' || LOWER(last_name) LIKE ?', [`%${name}%`]));
    };
    

    En esta consulta, estamos utilizando la función knex.raw() para unir las dos columnas con un espacio y luego utilizando una consulta LIKE con vinculaciones posicionales para buscar la consulta. El símbolo ? se utiliza como marcador de posición para la vinculación posicional y %${name}% se pasa como un array para reemplazar el marcador de posición.

    ¡Espero que esto ayude!

Comments are closed.