0

選択クエリに追加の列を追加して、TableA::doSelect($c) を実行すると、TableB のいくつかの列も取得できるようにするにはどうすればよいですか? 何かが欠けていない限り、addSelectColumn は symfony 1.0 では利用できないようです。

$c = new Criteria();
$c->setDistinct();
// need to add TableB::START_DATE to select
$c->addJoin(TableA::ID, TableB::ID);
...
$c->addAscendingOrderByColumn ( TableB::START_DATE );
$result = TableA::doSelect($c);
4

1 に答える 1

0

Symfony 1.0 でaddSelectColumn()を使用できますが、そのような場合にdoSelect()を追加することは避けるべきです。

このメソッドはオブジェクトを実行しており、そのすべてのフィールドをスキーマ ファイルに記述されている順序で取得することを想定しています。フィールドをスキップしたり、別のテーブルからフィールドを追加しようとしても、結果セットでは無視されます。

Propel のバージョンによっては、代わりにdoSelectStmt()、doSelectRS()またはdoSelectJoin()メソッドを試して使用することができます。

または、最も簡単な方法でprepareStatement()を使用します。

$con = Propel::getConnection();
$sql = "SELECT `table1`.field1, `table2`.field2 FROM `table1` JOIN `table2`. ON ..."

$st = $con->prepareStatement($sql);
$rs = $st->executeQuery();

while ($rs->next())
{
...
}

http://symfony.com/legacy/doc/cookbook/1_0/en/behaviors

于 2013-08-29T10:14:46.780 に答える