wake-up-neo.com

Laravel: orderBy eine Spalte mit Sammlungen

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.

7
Anis Hamidi

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.

10
devk

@ 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');
1
Anis Hamidi

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.

0
Jesse de gans