Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bilakah saya harus menggunakan `$model->relation()` lwn. `$model->relation()` dalam Laravel Eloquent?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-31 08:24:30349semak imbas

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>

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>
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!

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