2

我有以下sql查询,我需要在zend2中编写它。如何在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); 

回答

0

猜你是使用SQL适配器。但是,如果您查看了SQL ZF delete()implementation,则会看到没有order()limit()方法。所以,你不能叫他们...

+1

确定,但我怎么能实现在ZF2此查询? – Andreea

0

你可以尝试以下方法:

$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'); 

OR

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