Выбор таблицы ZF2Gateway

Я начал с ZendSkeletonApplication и добавил модель, расширяющую Zend\Db\TableGateway\TableGateway. У меня есть следующий метод:

public function findByType($type) {
    $rowset = $this->select('type' => $type);
    return $rowset;
}

Это работает, но теперь, если я сделаю это:

$foo = $table->findBytype('foo');
$bar = $table->findBytype('bar');

первый работает, запрос, который он выполняет:

SELECT * FROM table WHERE 'type' = 'foo'

Однако второй выполняет следующий запрос:

SELECT * FROM table WHERE 'type' = 'foo' AND 'type' = 'bar'

это ожидаемое поведение? Если да, то как я могу во второй раз вызвать метод, выполнив следующий запрос:

SELECT * FROM table WHERE 'type' = 'bar'

заранее спасибо!


person user458753    schedule 24.04.2012    source источник
comment
Оказывается, это была всего лишь незначительная ошибка в zf2 beta3, которая уже была исправлена ​​в последней версии github.   -  person user458753    schedule 25.04.2012


Ответы (1)


Следует использовать select в tableGateway следующим образом:

$select = $this->getSql()->select();
$select->where(array('type' => 'foo'))
    ->where(array('type' => 'bar'));
$rowset = $this->selectWith($select);

select() сбросит параметры where() при следующем вызове.

Подробнее об использовании см. в моем блоге: http://avnpc.com/pages/advanced-database-select-usage-in-zf2

person AlloVince    schedule 09.06.2012
comment
Есть ли англоязычная версия вашего блога? Фрагменты сделаны хорошо, но я получаю все на китайском языке, а Google пытается перевести это на немецкий, это довольно забавный опыт ;-) - person pia-sophie; 28.07.2017