Angenommen, ich habe zwei Modelle namens Product
und Image
, die mit Product hasMany Image
und Image belongsTo Product
verknüpft sind.
Sagen Sie jetzt, ich möchte alle Produkte mit dem ersten Bild abrufen. Ich würde diesen Code verwenden:
%Vor%Sieht nach rechts aus, oder? Außer jetzt enthält nur eins der Produkte ein Bild, obwohl jedes Produkt tatsächlich mindestens ein Bild enthält (wenn es ohne das Limit abgefragt wird).
Das Problem scheint mit dem Limit zu sein, da dies die folgenden zwei Abfragen erzeugt (zum Beispiel):
%Vor%und
%Vor%Betrachtet man die zweite Abfrage, ist es ziemlich offensichtlich, wie dies immer nur zu einem Bild führt.
Allerdings hätte ich erwartet, dass der Cake-ORM die Bilder auf 1 pro Produkt beschränkt, wenn ich limit(1)
aufgerufen habe.
Meine Frage: Ist das ein Fehler bei der Verwendung des ORM? Wenn ja, wie sollte ich die Anzahl der Bilder auf eins pro Bild begrenzen?
Die sauberste Möglichkeit besteht darin, eine andere Verknüpfung zu erstellen:
%Vor% Wenn Sie das Bild auf ein Bild beschränken möchten, müssen Sie ein Standardbild haben. Sie könnten in Erwägung ziehen, ein default
-Feld in die Bildtabelle einzufügen und einen solchen Alias auszuführen:
Es sieht so aus, als ob Sie Cake v3 verwenden, also können Sie einfach die entsprechende Assoziation hinzufügen, wie oben in 2.x beschrieben.
Tags und Links orm cakephp cakephp-3.0