Doctrine Query Builder funktioniert nicht mit UPDATE-und INNER-JOIN
In meine repository-ich habe diese Abfrage:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->update('MyBundle:Entity1', 'e1')
->join('e1.Entity2', 'e2')
->set('e1.visibile', '1')
->andWhere('e2.id = :id')->setParameter("id", 123)
;
diesen Fehler auslösen
[Semantical Error] line 0, col 66 near 'e2.id = :id': Error: 'e2' is not defined
Ich habe die Beziehung und es ist richtig.
Gibt es irgendein Problem mit join in der Abfrage update?
tun
Drucken Sie Ihre DQL, um zu sehen, was könnte falsch gelaufen ist. (
Ihre Fehler nicht entsprechen, Ihre code - der Fehler zeigt
generiert DQL: UPDATE MyBundle:Entity1 e1 SET e1.sichtbar = 1 WHERE e2.id = :id
haben Sie versuchen, meine Antwort? Hast du irgendwelche Fehler? Es sollte funktionieren, ich bin mit etwas, das sehr ähnlich wie bei meinem Projekt
e1
haben Entity2
memeber in seiner Klasse?Drucken Sie Ihre DQL, um zu sehen, was könnte falsch gelaufen ist. (
$qb->getQuery()->getDQL()
)Ihre Fehler nicht entsprechen, Ihre code - der Fehler zeigt
:use
- wo ist das in deinem code ?generiert DQL: UPDATE MyBundle:Entity1 e1 SET e1.sichtbar = 1 WHERE e2.id = :id
haben Sie versuchen, meine Antwort? Hast du irgendwelche Fehler? Es sollte funktionieren, ich bin mit etwas, das sehr ähnlich wie bei meinem Projekt
InformationsquelleAutor Alessandro Pessina | 2013-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht join auf update-und delete-Abfragen. Sie haben die Verwendung von Unterabfragen.
http://www.doctrine-project.org/jira/browse/DC-646
Wenn Sie MySQL verwenden, die Verwendung von Unterabfragen wird nicht funktionieren. Sie haben dann mit 2 Abfragen.
http://dev.mysql.com/doc/refman/5.0/en/subqueries.html
InformationsquelleAutor Maxence
Lehre DQL unterstützt keine Joins in update.
Versuchen dabei die folgenden :
Können Sie die id setzen, so lange, wie es ist der Primärschlüssel der verknüpften Entität direkt und unmittelbar, als ob es war die Einheit, in der Lehre zugeordnet werden.
Mache ich genau das gleiche in meinen Abfragen und es funktioniert.
stackoverflow.com/questions/5594853/... u re rigth
InformationsquelleAutor Hugo Dozois
versuchen Sie es mit einer Unterabfrage statt Join funktioniert nicht in DQL, während Sie neu und mache ein update:
SQLSTATE[HY000]: General error: 1093 You can't specify target table 'my_entity1' for update in FROM clause
. stackoverflow.com/questions/45494/...InformationsquelleAutor bleuscyther