Laravel 5,8. У меня есть таблица cats
:
id | name
---------
1 | jim
2 | mary
и таблица colors
:
id | color
----------
1 | white
2 | black
Я использую отношение polymorphi c, чтобы прикреплять цвета к кошкам (и другим существа). У меня есть таблица colorables
:
id | color_id | colorable_id | colorable_type
---------------------------------------------
1 | 1 | 2 | 'App\Cat'
и в моей Cat
модели у меня есть
public function colors()
{
return $this->morphToMany('App\Color', 'colorable');
}
У меня есть этот код контроллера, чтобы получить всех кошек данного цвета:
public function index(Request $request)
{
$cats = new Cat;
if ($request->has('color')) {
$color = $request->color;
$cats->whereHas('colors', function ($query) use ($color) {
$query->where('color_id', $color);
});
}
return $cats->get();
}
Но он возвращает всех кошек независимо от их цвета.