Ich muss eine Spalte mit Sammlung bestellen.
Ich muss orderBy(updated_at, 'desc')
alle Beiträge, die dem aktuell angemeldeten Benutzer gehören.
Hier ist mein Code:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Hier ist das Benutzermodell:
class User extends Authenticatable
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
Es gibt keine Fehler zurück und sortiert auch nicht!
Jede Hilfe wäre sehr dankbar.
P.S:
Ich weiß, dass ich das erreichen kann mit:
$posts = Post::where('user_id', auth()->user()->id)->orderBy('updated_at', 'desc')->get();
Aber ich möchte das Gleiche mit Sammlungen machen.
So sortieren Sie mit SQL:
$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC');
Und mit Sammlungen:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Ich habe die 2. getestet und es funktioniert wie für mich vorgesehen.
@ devk ist richtig. Was ich im ersten Beitrag geschrieben habe, ist richtig.
Das Problem war in DataTables in der Ansicht.
Diese Zeile musste zu den Datatables-Optionen hinzugefügt werden:
"order": [[ 5, 'desc' ]], // 5 is the `updated_at` column (the fifth column in my case)
Das funktioniert also gut:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Fügen Sie Ihrem Benutzermodell Folgendes hinzu
public function posts_sortedByDesc(){
return $this->hasMany(Post::class)->sortByDesc('updated_at');
}
Rufen Sie dann die Posts ab, indem Sie posts_sortedByDesc
anstelle von posts
aufrufen.