Cakephp 3.x Die Sortierung eines anderen Modells funktioniert nicht

7

Ich habe zwei Modelle Benutzer & amp; Rollen

Hier "Rollen hat viele Benutzer" und "Benutzer gehört zu Rollen"

Wenn der Benutzer gespeichert wird, fragen wir auch die Rolle des Benutzers & amp; Aufnahme gespeichert.

Problem: Ich habe eine Liste von Benutzern mit Spaltenname, Nachname, Rollen. Jeder & amp; Jede Spalte hat Sortierung, aber bei Rollen funktioniert die Sortierung nicht.

Role Table enthält das Feld "name" für den Rollennamen. Ich habe unten verlinkt, aber es funktioniert nicht für mich. Seitenumbruch Sortieren in CakePHP 3.x

UsersController:

%Vor%

index.ctp

%Vor%

Lassen Sie mich wissen, welche Lösung Sie haben.

    
Pratik Patel 27.04.2015, 10:59
quelle

3 Antworten

18

Sie müssen nur Folgendes verwenden:

%Vor%     
CodeZilla 28.07.2015 15:26
quelle
1

UsersController.php

%Vor%

Benutze 'order' = & gt; ['Models.field' = & gt; 'ASC / DESC']

    
Justin Atack 05.05.2015 07:56
quelle
-1

(Ich würde einen Kommentar zu Ihrer Frage hinzufügen, aber ich habe nicht genügend Reputationspunkte.)

Ich habe das gleiche Problem.

Dies geschieht aufgrund der Art und Weise, wie behaltbares Verhalten funktioniert. Wenn CakePHP alle Rollen für einen zugeordneten Benutzer abruft, gibt es eine separate Abfrage aus (anstatt einen Join für die Hauptabfrage zu verwenden). Dann bringt es alles zusammen in ein schönes Objekt zu benutzen. Sehen Sie sich das sql im Debug-Kit an.

Wenn Sie nach dem Rollennamen sortieren, kann dies nicht geschehen, da die Tabelle Rollen in der Hauptabfrage nicht zu finden ist. Ich vermute, Sie bekommen einen Fehler wie folgt:

Error: SQLSTATE[HY000]: General error: 1 no such column: Roles.name

Damit dies funktioniert, müssen Sie herausfinden, wie Sie der Tabelle "Roles" der Tabelle "Users" in der Hauptabfrage beitreten, damit dies funktioniert. Deshalb funktioniert es auch andersherum. Wenn die Tabelle "Benutzer" zur Tabelle "Rollen" gehört, haben Sie dieses Problem nicht, da die Tabelle "Rollen" in der Hauptabfrage verknüpft wäre.

Eine andere Möglichkeit, dies zu erreichen, könnte darin bestehen, das Rollenmodell für die Hauptabfrage zu verwenden. Wenn die Tabelle Ihres Benutzers jedoch andere hasMany-Zuordnungen hat, nach denen Sie sortieren möchten, funktioniert dies nicht. (Was ist mein Fall.)

Ich habe gerade angefangen, in CakePHP 3 einzusteigen, also habe ich wirklich keine konkrete Antwort an dieser Stelle, aber ich hoffe, dass dies dich in die richtige Richtung weist.

    
CovertIII 19.05.2015 15:52
quelle

Tags und Links