2012-04-24 2 views
1

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

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' 

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

+0

Оказывается, это была просто небольшая ошибка в ZF2 бета3, который Allready был зафиксирован в последней версии GitHub. – user458753

ответ

8

Если использовать выберите в tableGateway так:

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

выберите() будет сбросить где() paramters при вызове его в следующий раз.

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

+0

Есть ли английская версия вашего блога? Отрывки хорошо сделаны, но я получаю все на китайском языке, и Google пытается перевести его на немецкий язык, это своего рода забавный опыт ;-) –