In einem ActiveRecord (CakePHP aromatisiert) Setup habe ich eine HasAndBelongsToMany Zuordnung auf Videos und Bins: Ein Bin kann n Referenzen auf Videos speichern, und Videos können dazu gehören n Behälter.Sortierreihenfolge für Artikel in einer HABTM-Zuordnung speichern - CakePHP
Ich muss in der Lage sein, die Anzeigereihenfolge der Videos in einem bestimmten Bin manuell einzustellen und zu speichern (so kann der Kunde seine Videos in einer bestimmten Reihenfolge innerhalb des Bin haben.) Mein erster Gedanke ist, ein Feld zu erstellen Bin, der ein Array von Video-IDs in der Reihenfolge speichert, in der sie angezeigt werden sollen. Ist das der effizienteste Weg, damit umzugehen?
Wenn ja, wenn ich dann das HABTM-Abfrageergebnis erhalte, was ist der sauberste/effizienteste Weg, die zurückgegebene Abfrage neu zu ordnen, damit sie dem sortierten Array von IDs entspricht?
Die Videos mit einem Bin zugeordnet sind, als Array zurückgegeben:
[Video] => Array
(
[0] => Array
(
[id] => 49b2de95-0338-48b9-bc88-01ba35664358
...
)
[1] => Array
(
[id] => 49b1ccad-b770-410e-be46-03a035664358
...
)
Oder gibt es einen besseren Weg, um zu erreichen, was ich versuche, ohne HABTM Assoziationen zu tun?
Vielen Dank im Voraus -
Richtig. Anstatt die integrierten HABTM-Zuordnungen zu verwenden, erstellt Ihre Methode eine Join-Tabelle, um jedem Video einen Datensatz mit Metadaten (Gewichtung usw.) zuzuordnen, der eine feinkörnige Kontrolle über die Abfrage bietet. So konnte ich die "Mitgliedschaft" -Rekorde nach "Gewicht" bestellen, um meine korrekte Bestellung zu erhalten. –
gut ich bin nicht sicher, ob Sie es richtig sehen. Was ich vorschlage, ist, wegd von Habtm, und damit HABTM, und nur ein drittes Modell, das zu Video und Bin gehört, und ist bestellt. –
Nein, ich denke, wir sagen das Gleiche. Das neue dritte Modell speichert alle Metadaten, die das Bin für das Video benötigt, und ich kann es nach jedem Feld sortieren. Aber zu einem früheren Punkt von Ihnen: Konnte ich nicht fügen Sie ein Feld 'Reihenfolge' der Join-Tabelle VideosBins HABTM und dann sortieren die abgerufenen Daten durch dieses zusätzliche Feld mit Set :: sort (von Herrn Lecter unten)? –