Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mendapatkan Hadirin dengan Cekap untuk Acara dengan Perhubungan Bersarang dalam Laravel?

Bagaimanakah Saya Boleh Mendapatkan Hadirin dengan Cekap untuk Acara dengan Perhubungan Bersarang dalam Laravel?

Mary-Kate Olsen
Lepaskan: 2024-11-13 17:27:02
asal
790 orang telah melayarinya

How Can I Efficiently Retrieve Attendees for an Event with Nested Relationships in Laravel?

Masalah Perhubungan Bersarang Laravel: Menyelesaikan Pencarian Data Kompleks

Dalam Laravel, merapatkan hubungan rumit antara jadual pangkalan data selalunya terbukti mencabar. Pertimbangkan senario di mana anda berhasrat untuk mendapatkan semula hadirin acara dengan IDnya. Walau bagaimanapun, tugas ini rumit dengan kehadiran jadual perantara dalam rantaian perhubungan peristiwa-orang.

Untuk menangani isu ini, adalah penting untuk mentakrifkan perhubungan antara model anda dengan teliti. Dihuraikan di bawah ialah perhubungan model yang berkaitan:

Model Acara:

class Event extends Eloquent
{
    public function city()
    {
        return $this->belongsTo('City');
    }
}
Salin selepas log masuk

Model Bandar:

class City extends Eloquent
{
    public function companies()
    {
        return $this->hasMany('Company');
    }
}
Salin selepas log masuk

Syarikat Model:

class Company extends Eloquent
{
    public function persons()
    {
        return $this->hasMany('Person');
    }
}
Salin selepas log masuk

Model Orang:

class Person extends Eloquent
{
    public function eventscore()
    {
        return $this->belongsToMany('Event', 'event_scores', 'person_id', 'event_id')->withPivot('score')->withTimestamps();
    }
}
Salin selepas log masuk

Setelah menentukan perhubungan ini, mari kita terokai dua percubaan yang gagal untuk menyelesaikan isu:

return Event::with('city')->with('company')->get();
Salin selepas log masuk
return Event::with('city')->whereHas('companies', function($query) use ($company_id){
        $query->where('company_id', $company_id);
    })->get();
Salin selepas log masuk

Penyelesaian muktamad terletak pada penggunaan semangat yang fasih keupayaan memuatkan:

return Event::with('city.companies.persons')->get();
Salin selepas log masuk

Pertanyaan ini mendapatkan semula acara bersama-sama dengan bandar yang berkaitan, syarikat dan orang yang dikaitkan dengan syarikat tersebut.

Sebagai alternatif, jika hanya medan tertentu daripada jadual orang yang diperlukan:

return Event::with(['city.companies.persons' => function ($query) {
    $query->select('id', '...');
}])->get();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Hadirin dengan Cekap untuk Acara dengan Perhubungan Bersarang dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan