【问题标题】:How to use limit and order by in a delete query in Zend2如何在 Zend2 的删除查询中使用 limit 和 order by
【发布时间】:2017-02-06 09:35:41
【问题描述】:

我有以下 sql 查询,需要在 zend2 中编写。

DELETE FROM test_table WHERE user_id = 2 ORDER BY id ASC LIMIT 10

我试过这个:

$sql = new Sql($this->dbAdapter);
$delete = $sql->delete();
$delete->from('test_table');
$delete->where(array('user_id' => 4));

$delete->order('Id ASC');
$delete->limit(10);

$stmt = $sql->prepareStatementForSqlObject($delete);
$results = $stmt->execute();

但是当我添加这两行时它不起作用:

$delete->order('Id ASC');
$delete->limit(10);

【问题讨论】:

    标签: zend-framework2 sql-order-by sql-delete zend-db-table sql-limit


    【解决方案1】:

    猜你正在使用 SQL 适配器。但是,如果您查看 SQL ZF delete() implementation,您会发现没有 order()limit() 方法。所以你不能打电话给他们......

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法:

      $sql = new Sql($this->dbAdapter);
      $delete = $sql->delete();
      $delete->from('test_table');
      $delete->where(array('user_id' => 4));
      // get sql string
      $deleteQuery = $sql->getSqlStringForSqlObject($delete);
      // append the order by and limit
      $deleteQuery .= " ORDER BY id ASC LIMIT 10";
      // execute query
      $result = $this->dbAdapter->query($deleteQuery, 'execute');
      

      $deleteQuery = "DELETE FROM test_table WHERE user_id = 2 ORDER BY id ASC LIMIT 10";
      $result = $this->dbAdapter->query($deleteQuery, 'execute');
      

      【讨论】:

        猜你喜欢
        • 2020-11-19
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 2011-06-10
        • 2020-12-17
        • 1970-01-01
        • 2019-05-09
        相关资源
        最近更新 更多