function addFilterManyToMany($relation, $label, array $options, array $default = []) { $this->form->putTbSelect2($relation)->loadOptions($options)->setMultiple()->setLabel($label); $this->form->initValues([$relation => $default]); $values = (array) \Input::get($relation, $default); $key = $this->model->getRelation($relation)->getOtherKey(); if (count($values)) { $this->model->with($relation); $this->model->whereHas($relation, function ($query) use($values, $options, $relation, $key) { $filters = []; $query->whereIn($key, $this->ids($values)); foreach ($options as $k => $label) { if (in_array($k, $values)) { $filters[] = $relation . '_' . $k; // $query->orWhere('id', '=', $k); } } // dd(); // dd($this->model->listsExt()); // dd($key, $this->ids($values), $values, $options, $relation); $this->addJsFilter(implode('|', $filters)); }); } }