【问题标题】:Selecting certain fields using Propel select criteria使用推进选择标准选择某些字段
【发布时间】:2010-10-21 16:32:26
【问题描述】:

我在 Symfony 1.4 中为 Propel Criteria 提供的文档中找不到类似的内容

默认情况下,标准是:

$this->Merchantss = MerchantsPeer::doSelect(new Criteria());

但是,这会选择“Merchants”表中的所有字段。我只想选择一对,比如说:id、name、category。怎么可能通过标准来做到这一点?

我尝试了以下方法,但没有返回输出:

$criteria = new Criteria();
$criteria->add(MerchantsPeer::NAME);
$criteria->add(MerchantsPeer::ID);
$criteria->add(MerchantsPeer::CATEGORY);
$this->Merchantss = MerchantsPeer::doSelect($criteria);

提前致谢

【问题讨论】:

    标签: symfony1 criteria propel symfony-1.4


    【解决方案1】:

    这是怎么做的:

    $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
    }
    
    ?>
    

    【讨论】:

    • 谢谢。我采用了您的解决方案并使用 ->fetchAll() 抓取了整个数组。现在我正在使用 foreach 遍历它。我如何获得特定的值?它似乎是一个对象类型的对象(sfOutputEscaperArrayDecorator)
    • 为上面的答案添加了迭代内容的解决方案。
    • 工作出色。今天学到了新东西。谢谢! :-)
    【解决方案2】:
    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'); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2019-01-02
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多