使用Propel选择标准选择某些字段

时间:2010-10-21 16:32:27

标签: symfony1 criteria propel symfony-1.4

我无法在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);

提前致谢

2 个答案:

答案 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'); 
}
相关问题