Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Lehre 2:Entität kann nicht durch Identifikationsvariablen ausgewählt werden, ohne mindestens einen Stammentitätsalias auszuwählen

Ihr Problem besteht darin, dass Sie versuchen, ein Feld aus der Kategorieentität auszuwählen, während Sie gleichzeitig das gesamte Objekt der verbundenen Kategorieentität auswählen. Im Gegensatz zu einfachem SQL können Sie mit der QueryBuilder-Komponente eine Entität nicht nur aus der Tabelle auswählen, der Sie beitreten.

Wenn Sie Ihr Hauptkategorieobjekt mit den verbundenen Kindern zurückgeben möchten, können Sie entweder ->select(array('c', 'cc')) ausführen , oder lassen Sie einfach ->select() weg insgesamt anrufen. Ersteres wählt automatisch die Kinder aus, die Sie in einer einzigen Abfrage benötigen. Letzteres erfordert eine weitere SQL-Abfrage, wenn Sie auf untergeordnete Elemente der Hauptkategorieentität zugreifen möchten.

Wenn es einen Grund gibt, warum Sie name möchten als title auszuwählen in Ihrem Objekt können Sie Ihrer Entität jederzeit eine weitere Funktion hinzufügen, die ein Alias ​​zum Abrufen des Namens ist, anstatt ihn in Ihre Abfrage schreiben zu müssen:

function getTitle()
{
    return $this->getName();
}