Hallo Ich habe die folgende Abfrage, aber es scheint nicht zu funktionieren.Doktrin 2: Update-Abfrage mit Abfrage-Generator
$q = $this->em->createQueryBuilder()
->update('models\User', 'u')
->set('u.username', $username)
->set('u.email', $email)
->where('u.id = ?1')
->setParameter(1, $editId)
->getQuery();
$p = $q->execute();
Dies gibt die folgende Fehlermeldung:
$qb = $this->em->createQueryBuilder();
$q = $qb->update('models\User', 'u')
->set('u.username', $qb->expr()->literal($username))
->set('u.email', $qb->expr()->literal($email))
->where('u.id = ?1')
->setParameter(1, $editId)
->getQuery();
$p = $q->execute();
Entweder:
Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 38 near 'testusername WHERE': Error: 'testusername' is not defined.' in ...
ich keine Hilfe
Sie sollten Ihre Variablen immer als Parameter an die Doctrine-Abfrage übergeben! –
Können Sie auch ein Beispiel für die One-to-Many-Updates geben? –
Sie können auch '' $ qb-> update (...) verwenden -> set ('u.username', $ qb-> createNamedParameter ($ username)) '' und den Parameter -> setParameter auslassen. Das ist IMO der schönste Weg. Eine ähnliche Methode ist '' -> createPositionalParameter() ''. Siehe http://doctrine-dbal.readthedocs.org/en/latest/reference/query-builder.html#binding-parameters-to-placeholders –