Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Propel:wybieranie kolumn z aliasowanych tabel złączeń

Robię małe badania po przeczytaniu komentarza jchamberlaina na temat where pod jego odpowiedzią i doszedłem do wniosku, że

  • należy zawsze używać UpperCamelCase styl podczas wpisywania nazw kolumn w funkcjach napędowych, chociaż czasami działa dobrze, jeśli nie używasz tego stylu
  • rozwiązanie zależy od wersji Propela

Prawdopodobnie nie ma rozwiązania dla Propela <=1.6.7 (a może surowe zapytanie SQL jest jedynym rozwiązaniem), ponieważ bez względu na to, ile próbuję, zawsze kończy się na Cannot fetch ColumnMap for undefined column: ID_TABLE_B Wyjątek napędowy.

Dla Propela>=1.6.8 to zadziała:

Jeśli potrzebujesz tablicy z kolumnami z aliasami w wyniku

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

Jeśli potrzebujesz obiektów z kolumnami wirtualnymi z kolumn z aliasami

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znacznik czasu z milisekundową precyzją:Jak je zapisać w MySQL

  2. Napraw „ERROR 3942 (HY000):Każdy wiersz klauzuli VALUES musi mieć co najmniej jedną kolumnę” podczas korzystania z instrukcji VALUES w MySQL

  3. usunąć informacje z tabeli mysql, gdy użytkownik zamknie przeglądarkę

  4. Jak połączyć mysql z swiftem?

  5. MySQL zwiększa zmienną użytkownika, gdy zmienia się wartość