问题
I am trying to find a way to write eloquent way to query my model.
I have a Form
model every form belongs to a User
(Form:User = 1:1). Each User
has a State
and a City
associated with them. Admin
reviews a Form
and each admin can be assigned to multiple State
and City
.
I want to find the Form
that belongs to an Admin
.
This is the forms function in Admin.php (Model)
public function forms()
{
//cities
$cities = $this->cities->pluck('name');
//states
$states = $this->states->pluck('name');
//get all form from the user and states
$forms = Form::whereHas('user',function ($query) use($cities,$states)
{
// find form from his states or cities
$query->whereIn('state',$states)->orWhereIn('city',$cities);
});
return $forms;
}
Currently it returns all the forms. Any help will be appreciated!!!
回答1:
You can try this:
$citiesForms =$this->cities->forms->toArray();
$statesForms = $this->states->forms->toArray();
return array_merge($citiesForms, $statesForms);
and you can look for hasManyThrough
to make this done in one line
来源:https://stackoverflow.com/questions/40945634/foreign-key-query-laravel-the-eloquent-way