Laravel Eloquent の
relation()` vs. Laravel Eloquent の `$model->relation()`? " />
Laravel の Eloquent ORM における $model->relation(); の違いを理解する;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->relationLaravel は、リレーションシップの結果にプロパティとして直接アクセスできるようにする裏技を採用しています。$model->relation を呼び出しても、実際には既存のプロパティにはアクセスしません。代わりに、Laravel はこの呼び出しをインターセプトして __get() にルーティングします。このメソッドは最終的にプロパティ名 ('distributors') で getAttribute() を呼び出し、関係がキャッシュされているかどうか ('relations') を確認します。配列)。存在せず、リレーションシップ メソッドが存在する場合は、それをロードしようとします (getRelationshipFromMethod)。最後に、モデルはクエリを実行する getResults() を通じてリレーションシップから結果を取得します。本質的に、$model->relation は $model->relation()->get と同等です。 () は関係の結果を直接返します。結論
以上がLaravel Eloquent では `$model->relation()` と `$model->relation()` をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。