Laravel: Memesan Perhubungan dengan orderBy
Apabila bekerja dengan perhubungan dalam Laravel, ia boleh berguna untuk memesan hasil dengan cara tertentu. Sebagai contoh, anda mungkin mahu memaparkan ulasan yang dikaitkan dengan siaran dalam susunan kronologi.
Pertimbangkan gelung berikut, yang berulang melalui semua ulasan yang disiarkan oleh pengarang siaran tertentu:
foreach($post->user->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>"; }
Gelung ini mungkin menghasilkan output seperti:
I love this post (3) This is a comment (5) This is the second Comment (3)
Untuk memesan senarai mengikut post_id, anda boleh melanjutkan hubungan ulasan dengan orderBy fungsi:
public function comments() { return $this->hasMany('Comment')->orderBy('column'); }
Sekarang, apabila anda mengulangi ulasan, ia akan dipaparkan dalam susunan yang diingini:
This is the second Comment (3) I love this post (3) This is a comment (5)
Sebagai alternatif, anda boleh menggunakan kaedah yang lebih fleksibel menggunakan orderBy berfungsi sebagai input, serupa dengan contoh semakan input Input::get():
class User { public function comments() { return $this->hasMany('Comment'); } } class Controller { public function index() { $column = Input::get('orderBy', 'defaultColumn'); $comments = User::find(1)->comments()->orderBy($column)->get(); // use $comments in the template } }
Dengan melepasi orderBy column sebagai input, anda boleh memesan komen secara dinamik berdasarkan input pengguna. Ingat untuk melaksanakan semakan input yang betul untuk tujuan keselamatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Hubungan Fasih dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!