sql >> Database >  >> RDS >> Mysql

Propel:kolommen selecteren uit gealiaste join-tabellen

Ik doe wat onderzoek nadat ik de opmerking van jchamberlain heb gelezen over where caluse onder zijn antwoord en ik kwam tot de conclusie dat

  • je moet altijd UpperCamelCase gebruiken stijl wanneer u kolomnamen typt in aandrijffuncties, ook al werkt het soms prima als u deze stijl niet gebruikt
  • oplossing hangt af van Propel-versie

Waarschijnlijk is er geen oplossing voor Propel <=1.6.7 (of misschien is onbewerkte SQL-query de enige oplossing), want wat ik ook probeer, ik krijg altijd Cannot fetch ColumnMap for undefined column: ID_TABLE_B Uitzondering voortstuwen.

Voor Propel>=1.6.8 zal dit werken:

Als je array nodig hebt met gealiaste kolommen als resultaat

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

Als je objecten nodig hebt met virtuele kolommen van gealiaste kolommen

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. ORA-12170:TNS:Time-out verbinding opgetreden

  2. CakePHP recursief verwijderen

  3. PHP isset() met meerdere parameters

  4. Afbeeldingen in database streamen met HttpHandler