Ich habe 2 Tabellen (Schieberegler, Bilder) im Zusammenhang mit Junction (sliders_images) Tabelle, die Beziehung funktioniert gut, aber ich Nedd, um verwandte Daten mit bestimmten Reihenfolge, das Attribut zu definieren die richtige Reihenfolge in der Verknüpfungstabelle ist, wird die Beziehung wie folgt definiert:Yii2 Reihenfolge Elemente der Viele-zu-viele-Beziehung
public function getImages(){
return $this->hasMany(Images::className(), ['id' => 'image_id'])
->viaTable('sliders_images', ['slider_id' => 'id'], function($query){
$query->orderBy('sliders_images.display_order ASC');
});
}
, wenn ich rufe $model->images
ich die richtigen Bilder, aber die falsche Reihenfolge, mit foreach den Bildern empfangen wurde von id bestellt, wie kann ich das bekommen Bilder sortiert nach anderen Attributen?
Korshunow danke für die Wiederholung, ist Ihr Vorschlag nicht der richtige Weg, aber öffnen Sie meine Meinung, um die Lösung zu finden. Die Tabellenabbilder haben kein display_order-Attribut, dies ist ein Junction-Tabellenattribut. Für das Junction-Tabellen-Attribut in der Abfrage brauche ich eine 'joinWith()' Anweisung. Folgt der richtigen Antwort. – MarBer
Oh, verpasste das) Du hast Recht. Eigentlich bevorzuge ich es immer, separate AR-Entitäten für jede Tabelle zu deklarieren und mit "via" und "joinWith" statt direkter Tabellenreferenzen in Relationen und Abfragen umzugehen. Dieser Ansatz führt zu mehr sauberem, flexiblem und nachhaltigem Code IMHO. Also, definitiv, Sie auf dem richtigen Weg)) – oakymax