Zend 2 TableGateway难题?

时间:2013-04-18 19:05:43

标签: zend-framework2

我有这两段代码......在我的脑海中,它们是相同的,但是一个有效,一个没有。希望有人可以帮我解决这个问题。

此代码不起作用。它返回整个表,忽略orderby和limit。

public function getNews($limit = null)
{
    $select = new Select();

    $select->order('Date DESC');
    if($limit != null)
    {
        $select->limit($limit);
    }

    $result = $this->gateway->select($select);
    return $result;
}

此代码重新排列为使用匿名函数并且运行正常。

public function getNews($limit = null)
{
    $result = $this->gateway->select(
        function(Select $select) use ($limit)
        {
            $select->order('Date DESC');
            if($limit != null)
            {
                $select->limit($limit);
            }
        }
    );

    return $result;
}

任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

第二种方法是如何使用TableGateway::select方法。您可以传递一个简单的谓词数组或Closure,然后对Select对象执行更复杂的操作。

查看documentation on TableGateway了解详情。