zend-framework2 - ZF2 自定义查询

标签 zend-framework2

大家好,早上好

我正在遵循手册中 Rob Allen 的快速入门教程。 我正在努力改变一些事情。我正在尝试做的一件事是获得这样的查询:

"SELECT max(id) FROM Albums";

我试过类似的东西

$this->select();
$this->columns(array('id' => 'MAX(id)'));

显然这不是这样做的方法。 我可能需要一些表达式对象。

谁能告诉我如何解决这个问题?

编辑(忘记上面的)

这整个代码是基于手册(ZF2)中的快速入门 我设法编写了这样的查询:

    $select = $this->getSql()->select();
    $select->columns(array(new Expression('max(id) as MaxId')));
    $rowset = $this->selectWith($select);
    $row = $rowset->current();
    return $row;

这样做的结果是一个空对象。

但是当我改变的时候

    $select->columns(array(new Expression('max(id) as MaxId')));

  $select->columns(array(new Expression('max(id) as id')));

然后我取回一个 id 为 1 的对象。这是 max(id)。

但是当我在函数 exchangeArray 中添加一行带有 maxId 的相册对象时,它会返回 maxId 字段。

但是,我不可能每次都需要这样做,我只是想做这样的查询。这真的是它的工作方式吗?

最佳答案

使用Zend\Db\Sql\Expression

因此,如果我正确地看到了这一点(可能并非如此),你会像刚才那样做,但将 SQL 表达式包装到 new Expression('max(id)) .所以应该是下面这样

use Zend\Db\Sql\Expression;
//...
$this->columns(array(
    'maxid' => new Expression('max(id)')
));

如果这样的语法是错误的,请不要诅咒我,但我认为了解 Sql\Expression 已经对您有所帮助 ;)

关于zend-framework2 - ZF2 自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550490/

相关文章:

php - ZFCUser 登录后重定向到自定义 URL

zend-framework2 - Zend Framework 2 - 身份验证/ACL

zend-framework2 - 在 ZF2 路由器配置中的主机名下配置子路由的正确方法是什么?

php - 在 Zend Framework 2 中使用 mysql 用户变量

doctrine-orm - 原则 2 where 子句中的日期(查询生成器)

php - 如何在 Zend Framework 2 中注册自定义水化器?

php - zf2 是否有 urlencode 的别名?

doctrine-orm - 使用 Doctrine 2 的 UniqueEntity

php - 无法在控制台请求中从 ServiceLocator 获取 ViewRenderer 实例

php - zf2.如何处理循环 cli 脚本中 mysql 连接的超时?