我无法在Symfony 1.4中为Propel Criteria提供的文档中找到类似的内容
默认情况下,标准为:
$this->Merchantss = MerchantsPeer::doSelect(new Criteria());
但是,这会选择表中“商家”的所有字段。我只想选择一对,让我们说:id,name,category。如何通过标准这样做?
我尝试了以下操作,但它没有返回输出:
$criteria = new Criteria();
$criteria->add(MerchantsPeer::NAME);
$criteria->add(MerchantsPeer::ID);
$criteria->add(MerchantsPeer::CATEGORY);
$this->Merchantss = MerchantsPeer::doSelect($criteria);
提前致谢
答案 0 :(得分:3)
这是怎么做的:
$criteria = new Criteria();
$criteria->clearSelectColumns();
$criteria->addSelectColumn(MerchantsPeer::NAME);
$criteria->addSelectColumn(MerchantsPeer::ID);
$criteria->addSelectColumn(MerchantsPeer::CATEGORY);
$this->MerchantsStmt = MerchantsPeer::doSelectStmt($criteria);
$ this-> MerchantsStmt是一个PDOStatement
对象,可以使用->fetch()
方法进行迭代。有关详情,请参阅此处:PDOStatement
为了在模板中显示内容,您需要知道symfony“保护”传递给模板的对象的内容,以防止恶意代码被执行。如果您信任$ MerchantsStmt对象的内容,那么您可以像这样迭代它:
<?php
$MerchantsStmt = $sf_data->getRaw('MerchantsStmt');
foreach ($MerchantsStmt->fetchAll() as $value)
{
//some display logic
}
?>
答案 1 :(得分:0)
just to make addition information:
from the solution:
$this->MerchantsStmt = MerchantsPeer::doSelectStmt($criteria);
instead:
$rs = MerchantsPeer::doSelectRS($criteria);
To Access:
$rs->setFetchMode(ResultSet::FETCHMODE_ASSOC);
while ($rs->next())
{
$name = $rs->get('NAME');
}