Cara Mendapatkan Perhubungan Bersarang dalam Laravel: Mengakses Orang yang Dilanggan Acara Merentasi Jadual Perantara Berbilang?

Linda Hamilton
Lepaskan: 2024-11-17 02:38:03
asal
493 orang telah melayarinya

How to Retrieve Nested Relationships in Laravel: Accessing Persons Subscribed to an Event Across Multiple Intermediary Tables?

Perhubungan Bersarang dalam Laravel

Perhubungan bersarang membolehkan anda mengakses model yang berada dalam beberapa peringkat jauh dalam struktur data anda. Ini boleh menjadi satu cabaran untuk dicapai dalam Laravel, terutamanya dengan perhubungan yang rumit.

Pernyataan Masalah:

Mendapatkan semula senarai orang yang melanggan acara, walaupun terdapat beberapa jadual perantara antara model acara dan orang.

Struktur Pangkalan Data:

Struktur pangkalan data melibatkan jadual berikut: acara, bandar, syarikat dan orang.

Hubungan Model:

  • Acara: Milik Bandar
  • Bandar: Mempunyai banyak Syarikat, Mempunyai banyak Acara
  • Syarikat: Milik Bandar , Mempunyai ramai orang
  • Orang: Kepunyaan Syarikat, Kepunyaan Banyak Acara (melalui EventScore)

Percubaan Tidak Berjaya:

Percubaan untuk gunakan kaedah with() dan whereHas() tidak menghasilkan hasil yang diingini.

Penyelesaian:

Untuk menyelesaikan masalah ini, gunakan pertanyaan berikut:

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

Pertanyaan ini tidak sabar-sabar memuatkan bandar, syarikat dan orang yang dikaitkan dengan acara tersebut.

Sebagai alternatif, jika anda ingin memilih medan tertentu sahaja daripada jadual orang:

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

Pendekatan ini memastikan bahawa hanya medan yang ditentukan diambil, mengoptimumkan pertanyaan.

Atas ialah kandungan terperinci Cara Mendapatkan Perhubungan Bersarang dalam Laravel: Mengakses Orang yang Dilanggan Acara Merentasi Jadual Perantara Berbilang?. 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