Mysql
 sql >> Database >  >> RDS >> Mysql

Propel:selezione di colonne da tabelle join con alias

Faccio una piccola ricerca dopo aver letto il commento di jchamberlain su where caluse sotto la sua risposta e sono giunto alla conclusione che

  • dovresti sempre usare UpperCamelCase style quando digiti i nomi delle colonne nelle funzioni di propulsione, anche se a volte funziona bene se non usi questo stile
  • la soluzione dipende dalla versione di Propel

Probabilmente non esiste una soluzione per Propel <=1.6.7 (o forse la query SQL grezza è l'unica soluzione), perché non importa quanto ci provo finisco sempre con Cannot fetch ColumnMap for undefined column: ID_TABLE_B Promuove l'eccezione.

Per Propel>=1.6.8 funzionerà:

Se hai bisogno di array con colonne alias come risultato

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 hai bisogno di oggetti con colonne virtuali da colonne 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();