orm - Laravel - Eloquent "Has", "With", "WhereHas" - What do they mean? -
i've found concept , meaning behind these methods little confusing, possible explain me difference between has
, with
is, in context of example (if possible)?
with
with()
eager loading. means, along main model, laravel preload relationship(s) specify. helpful if have collection of models , want load relation of them. because eager loading run 1 additional db query instead of 1 every model in collection.
example:
user > hasmany > post
$users = user::with('posts')->get(); foreach($users $user){ $users->posts; // posts loaded , no additional db query run }
has
has()
filter selecting model based on relationship. acts normal condition. if use has('relation')
means want models have @ least 1 related model in relation.
example:
user > hasmany > post
$users = user::has('posts')->get(); // users have @ least 1 post contained in collection
wherehas
wherehas()
works same has()
allows specify additional filters related model check.
example:
user > hasmany > post
$users = user::wherehas('posts', function($q){ $q->where('created_at', '>=', '2015-01-01 00:00:00'); })->get(); // users have posts year returned
Comments
Post a Comment