Красноречивый фильтр с несколькими вариантами - PullRequest
0 голосов
/ 03 мая 2018

У меня есть форма поиска, чтобы отфильтровать несколько вариантов из полей выбора нескольких, чтобы отфильтровать доходы. Здесь у меня есть фильтр «Учетные записи», который у меня есть (работает прямо сейчас) Все учетные записи или фильтр одной учетной записи. Мне нужно иметь возможность фильтровать все, отдельные или несколько учетных записей на основе выбора пользователя.

Моя форма:

{!! 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> &nbsp;' . 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);
}

}

Буду благодарен, если кто-нибудь покажет мне, как этого добиться. Спасибо.

...