Выбор определенных полей с помощью критериев выбора Propel - PullRequest
0 голосов
/ 21 октября 2010

Я не могу найти что-то подобное в документации, предоставленной для Propel Criteria в Symfony 1.4

Критерии по умолчанию:

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

Однако при этом выбираются все поляв таблице для «торговцев».Я хотел бы только выбрать пару, скажем: идентификатор, имя, категория.Как это можно сделать с помощью критериев?

Я попробовал следующее, но он не возвращает вывод:

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

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

Вот как это сделать:

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

?>
0 голосов
/ 28 марта 2017
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'); 
}
...