sql >> Databasteknik >  >> RDS >> Mysql

Propel:välj kolumner från aliasade sammanfogningstabeller

Jag gör en liten research efter att jag läst jchamberlains kommentar om where caluse under hans svar och jag kom fram till att

  • du bör alltid använda UpperCamelCase stil när du skriver kolumnnamn i framdrivningsfunktioner, även om det ibland fungerar bra om du inte använder den här stilen
  • Lösningen beror på Propel-versionen

Förmodligen finns det ingen lösning för Propel <=1.6.7 (eller kanske är rå SQL-fråga den enda lösningen), för hur mycket jag än försöker hamnar jag alltid på Cannot fetch ColumnMap for undefined column: ID_TABLE_B Propel undantag.

För Propel>=1.6.8 kommer detta att fungera:

Om du behöver array med aliasade kolumner som resultat

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();

Om du behöver föremål med virtuella kolumner från aliasade kolumner

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();


  1. CakePHP 3:Bästa praxis för tillfälliga SQL-tabeller

  2. Rails 4:Använd MySql och MongoDB tillsammans

  3. hur kan jag säkerhetskopiera och återställa datum från mysql-databas

  4. PHP:Online offlinestatus