Apabila mendapatkan set model yang berkaitan, selalunya berguna untuk memesannya dengan cara tertentu. Dalam Laravel, ini boleh dicapai menggunakan kaedah orderBy.
Pertimbangkan senario berikut di mana anda mengulangi semua ulasan yang disiarkan oleh Pengarang siaran tertentu:
foreach($post->user->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>"; }
Kod ini akan memaparkan senarai berikut ulasan:
I love this post (3) This is a comment (5) This is the second Comment (3)
Untuk memesan ulasan melalui ID pos, lanjutkan hubungan hasMany dalam model Pengguna:
public function comments() { return $this->hasMany('Comment')->orderBy('column'); }
Ganti lajur dengan nama lajur yang anda ingin pesan mengikut . Dalam kes ini, kami akan menggunakan id:
public function comments() { return $this->hasMany('Comment')->orderBy('id'); }
Ini akan mengemas kini susunan ulasan menjadi:
I love this post (3) This is the second Comment (3) This is a comment (5)
Dalam selain pengekodan keras susunan dalam perhubungan, anda juga boleh memesan berdasarkan parameter pertanyaan. Untuk melakukan ini, tentukan laluan dalam fail route.php anda:
Route::get('users/{user}/comments', 'UserController@index');
Dan kemudian buat kaedah indeks yang sepadan dalam UserController anda:
public function index($user) { $column = Input::get('orderBy', 'defaultColumn'); $comments = $user->comments()->orderBy($column)->get(); // ... }
Apabila anda melawat laluan dengan orderBy parameter, ulasan akan dipesan sewajarnya. Contohnya, melawati URL berikut akan memesan ulasan mengikut lajur create_at:
http://localhost/users/1/comments?orderBy=created_at
Atas ialah kandungan terperinci Bagaimana untuk Memesan Model Berkaitan dalam Laravel Menggunakan `orderBy`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!