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

ИЛИ

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