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

Linda Hamilton
Lepaskan: 2024-11-17 03:29:03
asal
612 orang telah melayarinya

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');
    }
}
Salin selepas log masuk
// City Model
class City extends Eloquent
{
    public function companies()
    {
        return $this->hasMany('Company');
    }
}
Salin selepas log masuk
// Company Model
class Company extends Eloquent
{
    public function persons()
    {
        return $this->hasMany('Person');
    }
}
Salin selepas log masuk
// Person Model
class Person extends Eloquent
{
    public function company()
    {
        return $this->belongsTo('Company');
    }
}
Salin selepas log masuk

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

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

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();
Salin selepas log masuk

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!

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