コレクションのある列をOrderByする必要があります。
現在ログインしているユーザーが所有するすべての投稿をorderBy(updated_at, 'desc')
する必要があります。
ここに私のコードがあります:
$posts = auth()->user()->posts->sortByDesc('updated_at');
ユーザーモデルは次のとおりです。
class User extends Authenticatable
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
エラーも返さず、ソートもされません!
どんな助けでも大歓迎です。
追伸:
私はこれを達成できることを知っています:
$posts = Post::where('user_id', auth()->user()->id)->orderBy('updated_at', 'desc')->get();
しかし、コレクションでも同じことをしたいと思います。
これが、SQLでのソート方法です。
$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC');
コレクションを使用すると:
$posts = auth()->user()->posts->sortByDesc('updated_at');
2番目のものをテストしましたが、意図したとおりに機能します。
@devkは正しい。最初の投稿で書いたことは正しいです。
問題は、ビューの DataTables にありました。
この行をDatatablesオプションに追加する必要がありました。
"order": [[ 5, 'desc' ]], // 5 is the `updated_at` column (the sixth column in my case)
だからこれはうまく機能しています:
$posts = auth()->user()->posts->sortByDesc('updated_at');
以下をユーザーモデルに追加してみてください
public function posts_sortedByDesc(){
return $this->hasMany(Post::class)->sortByDesc('updated_at');
}
次に、posts
の代わりにposts_sortedByDesc
を呼び出して投稿を取得します