ZF2 tableGateway select
Я начал с приложения 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'
заранее спасибо!
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