Bilakah saya harus menggunakan `$model->relation()` lwn. `$model->relation()` dalam Laravel Eloquent?

Linda Hamilton
Lepaskan: 2024-10-31 08:24:30
asal
360 orang telah melayarinya

When should I use  `$model->relation()` lwn. `$model->relation()` dalam Laravel Eloquent? 
relation()` lwn. `$model->relation()` dalam Laravel Eloquent? " />

Perbezaan antara Panggilan Kaedah $model->relation(); dan $model->relation in Eloquent

Dalam ORM Eloquent Laravel, memahami perbezaan antara $model-> ;relation(); dan $model->relation() adalah penting.

$model->relation()

Memanggil $model->relation() secara terus memanggil fungsi hubungan yang ditakrifkan dalam model. Fungsi ini biasanya menyerupai:

<code class="php">public function distributors()
{
    return $this->hasMany('Distributor');
}</code>
Salin selepas log masuk

Dengan memanggil $store->distributors(), anda memperoleh nilai pulangan $this->hasMany('Distributor'), yang merupakan contoh IlluminateDatabaseEloquentRelationsHasMany.

Bila Menggunakan $model->relation(): Kaedah ini berharga apabila anda perlu menyesuaikan pertanyaan hubungan dengan lebih lanjut sebelum melaksanakannya >

<code class="php">$distributors = $store->distributors()->where('priority', '>', 4)->get();</code>
Salin selepas log masuk
Menggunakan $store->distributors()->get() ialah alternatif yang lebih mudah, tetapi ia menghasilkan hasil yang sama.

$model->relation

Laravel menggunakan teknik di sebalik tabir yang membolehkan akses terus kepada hasil perhubungan kerana sifat menggunakan $model->relation sebenarnya tidak mengakses harta sedia ada. Sebaliknya, Laravel memintas panggilan ini dan mengarahkannya ke __get().

Kaedah ini akhirnya memanggil getAttribute() dengan nama sifat ('pengedar'), yang meneruskan untuk menyemak sama ada hubungan itu dicache ('hubungan' tatasusunan). Jika tidak, dan jika kaedah perhubungan wujud, ia cuba memuatkannya (getRelationshipFromMethod). Akhir sekali, model mendapatkan semula hasil daripada perhubungan melalui getResults(), yang melaksanakan pertanyaan.

Pada dasarnya, $model->relation adalah bersamaan dengan $model->relation()->get (), mengembalikan hasil perhubungan secara langsung.

Kesimpulan

    $model->relation() mengembalikan objek perhubungan itu sendiri, membenarkan penyesuaian pertanyaan selanjutnya.
  • $model->relation terus mendapatkan semula hasil pertanyaan, menyediakan jalan pintas yang mudah.
Memahami perbezaan ini adalah penting untuk penggunaan Fasih yang berkesan.

Atas ialah kandungan terperinci Bilakah saya harus menggunakan `$model->relation()` lwn. `$model->relation()` dalam Laravel Eloquent?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!