Laravel Eloquent では `$model->relation()` と `$model->relation()` をいつ使用する必要がありますか?

Linda Hamilton
リリース: 2024-10-31 08:24:30
オリジナル
360 人が閲覧しました

Laravel Eloquent の

When should I use  `$model->relation()` と `$model->relation()` の比較? 
relation()` vs. Laravel Eloquent の `$model->relation()`? " />

Eloquent のメソッド呼び出し $model->relation(); と $model->relation の違い

Laravel の Eloquent ORM における $model->relation(); の違いを理解する;relation(); と $model->relation が重要です。

$model->relation()

$model->relation() を呼び出すと、定義された関係関数が直接呼び出されます。モデル内では、この関数は通常次のようになります。

<code class="php">public function distributors()
{
    return $this->hasMany('Distributor');
}</code>
ログイン後にコピー

$store->distributors() を呼び出すと、$this->hasMany('Distributor') の戻り値が得られます。 IlluminateDatabaseEloquentRelationsHasMany のインスタンス

$model->relation(): を使用する場合、このメソッドは、リレーションシップ クエリを実行する前にさらに調整する必要がある場合に役立ちます。たとえば、

<code class="php">$distributors = $store->distributors()->where('priority', '>', 4)->get();</code>
ログイン後にコピー
$store->distributors()->get() を使用することはより簡単な代替方法ですが、同じ結果が得られます。

$model->relation

Laravel は、リレーションシップの結果にプロパティとして直接アクセスできるようにする裏技を採用しています。$model->relation を呼び出しても、実際には既存のプロパティにはアクセスしません。代わりに、Laravel はこの呼び出しをインターセプトして __get() にルーティングします。

このメソッドは最終的にプロパティ名 ('distributors') で getAttribute() を呼び出し、関係がキャッシュされているかどうか ('relations') を確認します。配列)。存在せず、リレーションシップ メソッドが存在する場合は、それをロードしようとします (getRelationshipFromMethod)。最後に、モデルはクエリを実行する getResults() を通じてリレーションシップから結果を取得します。

本質的に、$model->relation は $model->relation()->get と同等です。 () は関係の結果を直接返します。

結論

    $model->relation() は関係オブジェクト自体を返し、クエリをさらにカスタマイズできます。
  • $model->relation はクエリ結果を直接取得し、便利なショートカットを提供します。
この違いを理解することは、Eloquent を効果的に使用するために不可欠です。

以上がLaravel Eloquent では `$model->relation()` と `$model->relation()` をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!