sql >> Base de Datos >  >> RDS >> Mysql

Propel:seleccionando columnas de tablas de unión con alias

Investigué un poco después de leer el comentario de jchamberlain sobre where caluse bajo su respuesta y llegué a la conclusión de que

  • siempre debe usar UpperCamelCase estilo cuando escribe nombres de columna en funciones de impulso, aunque a veces funciona bien si no usa este estilo
  • la solución depende de la versión de Propel

Probablemente no haya una solución para Propel <=1.6.7 (o tal vez la consulta SQL sin procesar sea la única solución), porque no importa cuánto lo intente, siempre termino con Cannot fetch ColumnMap for undefined column: ID_TABLE_B Propulsar excepción.

Para Propel>=1.6.8 esto funcionará:

Si necesita matriz con columnas con alias como resultado

TableAQuery::create()
  ->useTableBQuery('a')
      // some filters methods
  ->endUse()
  ->useTableBQuery('b')
      // some filters methods
  ->endUse()
  ->select(array('a.Value1', 'b.Value2')) // notice a.value_1 or b.value_2 won't work
  ->find();

Si necesitas objetos con columnas virtuales de columnas con alias

TableAQuery::create()
  ->useTableBQuery('a')
      // some filters methods
  ->endUse()
  ->useTableBQuery('b')
      // some filters methods
  ->endUse()
  ->withColumn('a.Value1') // notice a.value_1 won't work
  ->withColumn('b.Value2') // notice b.value_2 won't work
  ->find();