Можно ли фильтровать действия разрешить только те категории, которые имеют (или не содержат) категории внутри массива $categories?
После поиска в основном по SO я узнал, что может быть выполнена функция «линия» внутри оператора with, и я попытался использовать Модификатор 'wherePivotIn' думает, что он отфильтрует опорную точку 'id_category', чтобы она была в списке, но я получаю неопределенную ошибку переменной в $categories.
Если это не работает, есть ли у кого-нибудь хорошее решение для фильтрации моделей по одному из их отношений?
Внутри контроллера
Код: Выделить всё
public function get_activity_cat($categories_db){
$categories = [];
foreach (json_decode($categories_db) as $key => $value) {
array_push($categories, $value->id);
}
return Activity::select('id', 'name_spa', 'name_eng', 'price')
->with('covers')
->with('languages')
->with([ 'categories' => function($query){ $query->wherePivotIn('id_category', $categories); } ])
->get()
->toJson()
;
}
Код: Выделить всё
class Activity extends Model
{
protected $primaryKey = 'id';
public function covers()
{
return $this->belongsToMany('App\Cover', 'activities_covers', 'id_activity', 'id_cover')
->select(array('id', 'name_spa', 'name_eng'));
}
public function languages()
{
return $this->belongsToMany('App\Language', 'activities_languages', 'id_activity', 'id_language')
->select(array('id', 'id_lang', 'lang_name'));
}
public function categories()
{
return $this->belongsToMany('App\Category', 'activities_categories', 'id_activity', 'id_category');
}
}
Благодаря комментарию LC Yoong, ошибка неопределенной переменной решена, но у меня нет решения.
Этот метод только фильтрует результат связи, но не исключает «активность», когда опорная точка отсутствует в массиве $categories.
Подробнее здесь: https://stackoverflow.com/questions/513 ... lationship