ZF2 tableGateway选择

时间:2012-04-24 12:03:09

标签: zend-framework2 tablegateway

我从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 个答案:

答案 0 :(得分:8)

应该在tableGateway中使用select:

$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