Rumah >pangkalan data >tutorial mysql >Cara Mendapatkan Data Bersarang daripada Model Fasih dalam Laravel: Panduan Praktikal

Cara Mendapatkan Data Bersarang daripada Model Fasih dalam Laravel: Panduan Praktikal

Linda Hamilton
Linda Hamiltonasal
2024-11-17 03:29:03687semak imbas

How to Retrieve Nested Data from Eloquent Models in Laravel: A Practical Guide

Hubungan Bersarang Laravel: Membongkar Pendapatan Data Kompleks

Salah satu kekuatan Laravel terletak pada keupayaannya untuk mengendalikan hubungan yang kompleks antara model. Walau bagaimanapun, mendapatkan semula data bersarang kadangkala boleh terbukti mencabar. Dalam artikel ini, kami akan menangani isu biasa yang melibatkan perhubungan yang sangat bersarang dan menunjukkan cara untuk mencapai hasil yang diinginkan dengan ORM berkuasa Laravel.

Andaikan anda mempunyai senario di mana anda perlu mendapatkan semula senarai orang yang telah melanggan acara tertentu. Acara itu, seterusnya, dikaitkan dengan bandar, manakala bandar itu dikaitkan dengan satu atau lebih syarikat. Akhir sekali, setiap syarikat menggaji beberapa orang.

Untuk menyelesaikan perhubungan bersarang ini, elakkan menggunakan pertanyaan SQL mentah kerana ia boleh membawa kepada penalti prestasi dan cabaran penyelenggaraan. Sebaliknya, mari kita manfaatkan hubungan Laravel yang fasih.

// Event Model
class Event extends Eloquent
{
    public function city()
    {
        return $this->belongsTo('City');
    }
}
// City Model
class City extends Eloquent
{
    public function companies()
    {
        return $this->hasMany('Company');
    }
}
// Company Model
class Company extends Eloquent
{
    public function persons()
    {
        return $this->hasMany('Person');
    }
}
// Person Model
class Person extends Eloquent
{
    public function company()
    {
        return $this->belongsTo('Company');
    }
}

Pertanyaan yang betul untuk mendapatkan semula data bersarang yang dikehendaki ialah:

Event::with('city.companies.persons')->get();

Dengan menggunakan " with()", anda boleh menentukan model berkaitan yang anda ingin dapatkan bersama dengan model utama. Dalam kes ini, kami menyatakan bahawa kami ingin mendapatkan semula hubungan "bandar", diikuti oleh hubungan "syarikat", dan akhirnya hubungan "orang" yang dikaitkan dengan setiap syarikat.

Hasil pertanyaan ini akan menjadi koleksi Eloquent yang mengandungi model Acara, yang setiap satunya mempunyai akses kepada model Bandar, Syarikat dan Orang yang sepadan.

// To retrieve specific fields from the persons table
Event::with(['city.companies.persons' => function ($query) {
    $query->select('id', '...');
}])->get();

Dengan memasukkan teknik ini ke dalam aplikasi Laravel anda, anda boleh memudahkan pengambilan semula bersarang dalam data, memastikan kod yang boleh diselenggara dan cekap.

Atas ialah kandungan terperinci Cara Mendapatkan Data Bersarang daripada Model Fasih dalam Laravel: Panduan Praktikal. 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