如何在我的select查询中添加一个额外的列,这样当我执行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);
答案 0 :(得分:0)
您可以将 addSelectColumn()与Symfony 1.0一起使用,但在这种情况下应避免添加 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())
{
...
}