Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Propel:selecionando colunas de tabelas de junção com alias


Eu faço uma pequena pesquisa depois de ler o comentário de jchamberlain sobre where calo em sua resposta e cheguei à conclusão de que
  • você deve sempre usar UpperCamelCase style quando você digita nomes de colunas em funções de propulsão, mesmo que às vezes funcione bem se você não usar esse estilo
  • a solução depende da versão do Propel

Provavelmente não há solução para Propel <=1.6.7 (ou talvez a consulta SQL bruta seja a única solução), porque não importa o quanto eu tente, sempre acabo com Cannot fetch ColumnMap for undefined column: ID_TABLE_B Exceção de propulsão.

Para Propel>=1.6.8 isso funcionará:

Se você precisar de matriz com colunas com 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();

Se você precisar de objetos com colunas virtuais de colunas com 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();