ホームページ >PHPフレームワーク >Laravel >laravelでwherehasは何に使われますか?
laravel では、wherehas は関連付け関係に基づいてモデルのクエリ結果をフィルターし、このモデルにフィルター条件を追加できます。メイン テーブルのスレーブ テーブルに関するデータをフィルターするためによく使用されます。構文は、「User::whereHas ('from table', function($...){$...->where(フィルター条件);})->get()」です。
#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。
with()
laravel の with() メソッドは「熱心な読み込み」に使用されます。これは主に、laravel の正確な関係を意味します。メインモデルとともにプリロードされます。これは、モデルにすべての関係を追加する場合に非常に役立ちます。 「ハングリー ロード」により 1N クエリの問題が軽減されるため、問題を解決するのに必要なクエリは 11 回だけになり、クエリ速度が大幅に向上します。
例:
user > hasMany > post
$users = User::with('posts')->get(); foreach($users as $user){ $users->posts; // posts已经被加载了,没有增加DB查询 }
has()
has() メソッドに基づいていますon association リレーションシップはモデルのクエリ結果をフィルタリングするために使用されるため、その機能は where 条件と非常によく似ています。 has('post') のみを使用する場合は、少なくとも 1 つのポスト関連付けを持つこのモデルのみを取得することを意味します。
例:
user > hasMany > post
//User至少有一条post的关联关系 $users = User::has('post')->get();
「.」を使用してネストされた has ステートメントを構築することもできます。
例:
user > hasMany > post
$user = User::has('post.votes', ‘>’, '3')->get();
whereHas()
whereHas()メソッド 原理は基本的に has() メソッドと同じですが、このモデルに自分でフィルター条件を追加できます。
例:
user > hasMany > post
$users = User::whereHas('posts', function($q){ $q->where('created_at', '>=', '2017-11-29'); })->get();
[関連する推奨事項: laravel ビデオ チュートリアル]
以上がlaravelでwherehasは何に使われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。