2

J'ai une requête sql suivante et j'ai besoin de l'écrire dans zend2.Comment utiliser limite et ordre par dans une requête de suppression dans Zend2

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

J'ai essayé avec ceci:

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

mais il ne fonctionne pas quand j'ajouter ces deux lignes:

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

Répondre

0

Devinez vous utilisez l'adaptateur SQL. Mais, si vous jetez un oeil sur le SQL ZF delete()implementation, vous verrez qu'il n'y a pas de méthodes order() ou limit(). Donc, vous ne pouvez pas les appeler ...

+1

ok, mais comment puis-je mettre en œuvre cette requête dans ZF2? – Andreea

0

Vous pouvez essayer ce qui suit:

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

OU

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