where
に関するjchamberlainのコメントを読んだ後、少し調べます。 彼の答えの下で落ち着いて、私はその結論に達しました
- 常に
UpperCamelCase
を使用する必要があります 推進関数に列名を入力するときのスタイル。ただし、このスタイルを使用しない場合は正常に機能することがあります - 解決策はPropelのバージョンによって異なります
おそらく、Propel <=1.6.7の解決策はありません(または、生のSQLクエリが唯一の解決策です)。これは、いくら試しても、常にCannot fetch ColumnMap for undefined column: ID_TABLE_B
> 例外を推進します。
Propel> =1.6.8の場合、これは機能します:
アレイが必要な場合 結果としてエイリアス列を使用
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();
オブジェクトが必要な場合 エイリアス列からの仮想列を使用
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();