Verwenden von limit () für das enthaltene Modell

8

Der Code

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).

Die resultierenden Abfragen

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.

Das Problem

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?

    
Lars Ebert 21.04.2015, 14:53
quelle

3 Antworten

14

Die sauberste Möglichkeit besteht darin, eine andere Verknüpfung zu erstellen:

%Vor%     
José Lorenzo 21.04.2015, 19:46
quelle
4

Überprüfen Sie es, das ist mein Code

%Vor%     
sradha 29.09.2016 04:23
quelle
0

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:

%Vor%

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.

    
Amb3rL4nn 21.04.2015 16:27
quelle

Tags und Links