Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Memesan Hubungan Fasih dalam Laravel?

Bagaimanakah Saya Boleh Memesan Hubungan Fasih dalam Laravel?

DDD
DDDasal
2024-11-24 05:02:09539semak imbas

How Can I Order Eloquent Relationships in Laravel?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn