2012-04-24 81 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

原来这只是在已经媒体链接被固定在最新的github版本ZF2素β3一个小错误。 – user458753 2012-04-25 07:43:36

回答

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试图用德语翻译它,这是一种有趣的体验;-) – 2017-07-28 10:06:29