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 回答