选择模型中最后一个记录集的语法

时间:2017-06-29 08:59:03

标签: zend-framework zend-db zend-framework3

我尝试了不同的可能性,但没有任何效果,在教程中我也找不到一个例子。

我的模型类中有一个方法:

    public function getlastImport($filename)
{
    //$id = (int) $id;
    $rowset = $this->tableGateway->select(['Path' => $filename]);
    $row = $rowset->current();
    if (! $row) {
        throw new RuntimeException(sprintf(
                'Could not find row with identifier %d',
                $id
                ));
    }

    return $row;
}

我想检索给定文件名的最后一次导入,所以ist必须像在sql中一样:

select max(ID) from table where filename = $filename;

但在这种情况下,如何正确的语法?

1 个答案:

答案 0 :(得分:1)

sql查询应该是

"SELECT * FROM table_name WHERE filename={$filename} ORDER BY id DESC LIMIT 1" 

在模型中使用以下

public function getlastImport($filename)
{

    $select = $this->tableGateway->getSql()->select();
    $select->columns(array('id', 'filename', 'label'));
    $select->where(array('filename' => $filename));
    $select->order("id DESC");
    $select->limit(1);

    $result = $this->tableGateway->selectWith($select);
    $row = $result->current();

    if (! $row) {
        throw new RuntimeException(sprintf(
            'Could not find row with identifier %d',
            $id
        ));
    }

    return $row;
}

希望这会对你有所帮助!