Ich versuche ein Kriterium nach the Doctrine Docs einzurichten.Lehre 2.3 Kriterien. Zugreifen auf ein zugehöriges Objekt
Leider sagen sie Ihnen nicht, wie Sie auf Attribute eines verwandten Objekts zugreifen. Lassen Sie mich Ihnen ein Beispiel geben.
Ich habe eine ArrayCollection von Produkten. Jedes Produkt hat eine Kategorie. Ich möchte die ArrayCollection nach einem Kategorienamen filtern. Jetzt versuche ich, einen festgelegten Kriterien wie folgt zusammen:
$criteria = Criteria::create()
->where(Criteria::expr()->eq("category.name", "SomeCategoryName"));
Jetzt erhalte ich die folgende Ausnahme:
An exception has been thrown during the rendering of a template ("Unrecognized field: category.name")
Wie kann ich ein ähnliches Objekt zugreifen?
Vielen Dank für Ihre Antwort. Ich werde deine 'Ctriteria' am Montag testen. Im Moment habe ich keinen Zugriff auf meine Arbeitsstation. Ich werde Sie wissen lassen, ob es funktioniert. Aber Filter ist meiner Meinung nach eine schlechte Idee, weil alle Kategorien eifrig geladen und dann lokal auf der Platte verarbeitet werden (Was wird niemals so leistungsfähig sein, wie es in einer DB gemacht wird). – Robin
Sie sind falsch informiert. Kriterien können in einer Abfrage (Daten, die abgerufen werden) sowie in einer ArrayCollection (bereits abgerufene Daten) verwendet werden. Wenn Sie keine Fetch-Joins machen, wird die Relation geladen, egal ob Sie Kriterien oder filter() verwenden. Sie haben recht, dass die DB Ihnen die meiste Leistung bringt, deshalb ist es am besten, Fetch Join in Kombination mit WHERE zu verwenden. Obwohl das nicht deine Frage war. – Flip
Ich dachte, es wäre möglich, Ihre Entitäten zu kommentieren, so dass sie faul geladen sind? http: // Dokumentedoctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-manytoone. Wäre das nicht die 'ArrayCollection' faul? Oder würde das nicht funktionieren, weil das die umgekehrte Annotation ist? – Robin