[解決済み】Laravel - Eloquent "Has", "With", "WhereHas" - これらの意味は何ですか?
2022-03-27 23:31:48
質問
これらのメソッドの背後にある概念と意味が少しわかりにくいのですが、誰かが私に説明することは可能ですか?
has
と
with
は、(可能であれば)例の文脈で教えてください。
どのように解決するのですか?
と
with()
は
エージーロード
. これは基本的に、メインモデルに沿って、Laravelが指定されたリレーションシップをプリロードすることを意味します。これは、モデルのコレクションがあり、それらすべてに対してリレーションをロードしたい場合に特に便利です。なぜなら、イーガーローディングでは、コレクション内の全てのモデルに対してDBクエリを実行するのではなく、1つだけ追加で実行するからです。
例
User > hasMany > Post
$users = User::with('posts')->get();
foreach($users as $user){
$users->posts; // posts is already loaded and no additional DB query is run
}
ハス
has()
は、リレーションシップに基づいて選択モデルをフィルタリングするためのものです。つまり、通常のWHERE条件と非常によく似た動作をします。もし、単に
has('relation')
は、この関係において少なくとも1つの関連モデルを持つモデルのみを取得したいことを意味します。
例
User > hasMany > Post
$users = User::has('posts')->get();
// only users that have at least one post are contained in the collection
所属
whereHas()
と基本的に同じ働きをします。
has()
を使用しますが、関連するモデルをチェックするための追加のフィルタを指定することができます。
例
User > hasMany > Post
$users = User::whereHas('posts', function($q){
$q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
// only users that have posts from 2015 on forward are returned
関連
-
[解決済み] Class 'AppHttpControllers</DB' not found in Laravel 5 Controller
-
[解決済み] npm notice は package-lock.json としてロックファイルを作成しました。
-
タイプエラーです。Too few arguments to function IlluminateSupport ゙Manager::createDriver()
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
-
[解決済み] Laravel Eloquentを使って最後に挿入されたIDを取得する
-
[解決済み] Laravel Eloquent クエリ WHERE を OR AND OR で使用する?
-
[解決済み】Laravel - EloquentまたはFluentランダム行
-
[解決済み】Laravel EloquentのWith()関数で特定のカラムを取得する。
-
[解決済み】laravel eloquentで特定の列を選択する方法
-
[解決済み] ロード時にLaravel / Eloquentモデルにカスタム属性を追加しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Class 'AppHttpControllers</DB' not found in Laravel 5 Controller
-
[解決済み] エラーベーステーブルまたはビューが見つかりませんを修正する方法:1146テーブルlaravelの関係テーブル?
-
[解決済み] 未定義のメソッドIlluminateFoundationApplication::bindShared()への呼び出し。
-
[解決済み] すべてのコントローラとビューのグローバル変数
-
[解決済み] Laravel Homesteadを使用しています。'入力ファイルが指定されていない'
-
[解決済み] Laravel、each()関数でできることは?
-
入力ファイルを開くことができませんでした:artisan
-
[解決済み] のエラーが発生しました。OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 [重複].
-
[解決済み】Laravel 5 - artisan seed 【ReflectionException】クラスSongsTableSeederが存在しない。
-
[解決済み】テーブルの最終行を選択する