2013-06-26 3 views
6

Ich mag gerne wissen, ob es einen Weg gibt, mehrreihige in ZF2 mit nur einem $ SQL-Objekt (und nicht mit der Abfrage (SQL-Befehl) -Methode) einzufügen.ZF2 Einsatz mehrere Zeilen

Ich habe versucht, so etwas wie diese, aber es funktioniert nicht:

public function setAgentProjectLink($IDProject , $IDsAgents) 
{ 
    $values = array() ; 
    foreach ($IDsAgents as $IDAgent): 
    { 
     $values[] = array ('id_agent' => $IDAgent , 'id_projet' => $IDProject) ; 
    } endforeach ; 

    $sql = new Sql($this->tableGateway->adapter) ; 
    $insert = $sql->insert() ; 

    $insert -> into ($this->tableGateway->getTable()) 
      -> values ($values) ; 

    $statement = $sql->prepareStatementForSqlObject($insert); 
    $result = $statement->execute(); 
} 

Der Versuch, mit zwei Spalten Werte in einer Datenbank einzufügen (id_agent, id_projet)

+1

Es wird keine generische Methode geben, dies zu tun, wenn die Datenbankabstraktion verwendet wird, da mehrere Einfügungen eine MySQL-Funktion und keine Standard-SQL-Einfügeart sind. – Andrew

+0

Danke für die Antwort (Entschuldigung für sehr späte Antwort). Ich fand die bessere Lösung, um mein Problem in diesem Fall zu lösen, ist die Verwendung der zf2 SQL-Transaktionen. – aramir

+0

Ja, nach der Verwendung von zf2 SQL-Transaktionen, müssen Sie 'set' Parameter in Werte übergeben(), wie $ insert -> in ($ this-> tableGateway-> getTable()) -> Werte ($ Werte, 'einstellen') ; – prava

Antwort

4

gibt es keine generische Art und Weise für multyinsert in ZF2 ABER wenn Sie MySQL verwenden und nicht planen, zu anderen Datenbanken zu wechseln, habe ich eine MultiInsert-Funktion für mich geschrieben:

$data ist ein Array von Arrays von Schlüssel, Wert-Paare.

+0

Funktioniert wie ein Charme .... Vielen Dank! –