Problema con función concat dentro de inner join
  • buen día a todos,

    Resulta que estoy tratando de hacer un inner join, pero quiero usar dentro de este  la función concat y que esta se retorne con nombre de campo 'desc'. Como es bien sabido 'desc' es una palabra reservada de mysql y se debe meter entre comillas para que no la tome como tal (quoting) ; pero al meterla me arroja la siguiente excepción KumbiaException: Se esta tratando de ejecutar una operacion maliciosa! (0)

    Este es el código que está dentro de un método en mi clase modelo:

    return $this->find('columns: fecha as date, producto.nombre as title,
                CONCAT(hora_inicio,-, hora_fin, cliente.nombres,-, cliente.apellidos) as `desc`',
                    'join: inner join cliente on cliente.id = agenda.cliente_id
                        inner join producto on producto.id = agenda.producto_id');

    Agradezco su ayuda.


     


  • Buenas, usa el find_all_by_sql() y usa sql directamente
  • Lo hice así y funcionó:

    public function getCalendario(){
            $sql = "SELECT fecha as date, producto.nombre as title, 
                    CONCAT(hora_inicio, ' hasta ',  hora_fin, ' ', cliente.nombres, ' ', cliente.apellidos) as 'desc'
                    FROM agenda
                    INNER JOIN cliente ON (agenda.cliente_id=cliente.id)
                    INNER JOIN producto ON (agenda.producto_id=producto.id)";
           
            return $this->find_all_by_sql($sql);

    ¿Pero este error que reporté se catalogaría como un bug?

  • No es un but, es un feature, el método find no te permite usar comillas dobles ni simples.