У меня есть форма поиска, чтобы отфильтровать несколько вариантов из полей выбора нескольких, чтобы отфильтровать доходы. Здесь у меня есть фильтр «Учетные записи», который у меня есть (работает прямо сейчас) Все учетные записи или фильтр одной учетной записи. Мне нужно иметь возможность фильтровать все, отдельные или несколько учетных записей на основе выбора пользователя.
Моя форма:
{!! Form::open(['url' => 'incomes/revenues', 'role' => 'form', 'method' => 'GET']) !!}
<div class="pull-left">
<span class="title-filter hidden-xs">{{ trans('general.search') }}:</span>
<!--{!! Form::text('search', request('search'), ['class' => 'form-control input-filter input-sm', 'placeholder' => trans('general.search_placeholder')]) !!}-->
{!! Form::text('start', request('start'), ['class' => 'form-control input-filter input-sm','id' => 'datepicker', 'placeholder' => trans('general.date_placeholder')]) !!}
{!! Form::text('end', request('end'), ['class' => 'form-control input-filter input-sm','id' => 'datepicker1', 'placeholder' => trans('general.date_placeholder')]) !!}
{!! Form::select('customer', $customers, request('customer'), ['class' => 'form-control input-filter input-sm']) !!}
{!! Form::select('category', $categories, request('category'), ['class' => 'form-control input-filter input-sm']) !!}
{!! Form::select('account', $accounts, request('account'), ['multiple' => 'true','class' => 'form-control input-filter input-sm']) !!}
{!! Form::button('<span class="fa fa-filter"></span> ' . trans('general.filter'), ['type' => 'submit', 'class' => 'btn btn-sm btn-default btn-filter']) !!}
</div>
Мой контроллер
public function index()
{
$revenues = Revenue::with(['account', 'category', 'customer'])->isNotTransfer()->collect(['paid_at'=> 'desc']);
$customers = collect(Customer::enabled()->pluck('name', 'id'))
->prepend(trans('general.all_type', ['type' => trans_choice('general.customers', 2)]), '');
$categories = collect(Category::enabled()->type('income')->pluck('name', 'id'))
->prepend(trans('general.all_type', ['type' => trans_choice('general.categories', 2)]), '');
$accounts = collect(Account::enabled()->pluck('name', 'id')->toArray())
->prepend(trans('general.all_type', ['type' => trans_choice('general.accounts', 2)]), '');
$transfer_cat_id = Category::transfer();
return view('incomes.revenues.index', compact('revenues', 'customers', 'categories', 'accounts', 'transfer_cat_id'));
}
Мой фильтр
public $relations = [];
public function search($query)
{
return $this->whereLike('description', $query);
}
public function start($start)
{
return $this->where('paid_at','>=' , $start);
}
public function end($end)
{
return $this->where('paid_at','<=' , $end);
}
public function customer($customer)
{
return $this->where('customer_id', $customer);
}
public function category($category)
{
return $this->where('category_id', $category);
}
public function account($account)
{
return $this->where('account_id', $account);
}
}
Буду благодарен, если кто-нибудь покажет мне, как этого добиться. Спасибо.