2010-10-21 85 views
0

我无法找到在Symfony的规定的波轮标准文档这样的某些字段1.4选择使用波轮选择标准

的标准,默认为:

$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); 

感谢

回答

3

这是如何做到这一点:

$criteria = new Criteria(); 
$criteria->clearSelectColumns(); 
$criteria->addSelectColumn(MerchantsPeer::NAME); 
$criteria->addSelectColumn(MerchantsPeer::ID); 
$criteria->addSelectColumn(MerchantsPeer::CATEGORY); 
$this->MerchantsStmt = MerchantsPeer::doSelectStmt($criteria); 

$这个 - > MerchantsStmt是一个PDOStatement对象,可以使用->fetch()方法进行迭代。请参阅此处获取更多详细信息:PDOStatement

为了在模板中显示内容,您需要知道symfony'保护'传递给模板的对象的内容以防止执行恶意代码。如果您信任的$ MerchantsStmt对象的内容,那么你可以重复这样的:

<?php 

$MerchantsStmt = $sf_data->getRaw('MerchantsStmt'); 

foreach ($MerchantsStmt->fetchAll() as $value) 
{ 
    //some display logic 
} 

?> 
+0

谢谢。我用你的解决方案,并使用 - > fetchAll()来抓取整个数组。现在我正在使用foreach来遍历它。我如何获得具体的价值?它看起来像是一个对象类型的对象(sfOutputEscaperArrayDecorator) – Aamir 2010-10-21 19:05:15

+0

添加了一个解决方案,用于将内容迭代到上面的答案。 – Raise 2010-10-21 19:15:12

+0

精湛的作品。今天学到了新东西。谢谢! :-) – Aamir 2010-10-21 19:33:43

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'); 
}