Laravel - Преобразовать фильтр текстового поля в выпадающий фильтр - PullRequest
0 голосов
/ 04 июля 2019

Я разрабатываю приложение для создания отчетов, которое фильтрует по дате и текстовому полю:

public function revenueOverall(Request $request)
{

    $data['title'] = 'Revenue Overall';

    $revenuedetails = DB::table('vw_revenue_report_dashboard as g')
    ->select(
       DB::raw('DATE(g.created_at) as created_date'),
       'g.msisdn', 
       'g.channel', 
       'g.amount'              
  )
 ->orderByRaw('g.created_at DESC'); 


    $start_date = $request->start_date;
    $end_date = $request->end_date; 

    $render=[];  
    if(isset($request->start_date) && isset($request->end_date))
    {
        $revenuedetails=$revenuedetails->whereBetween('created_at',[$start_date.' 00:00:00',$end_date.' 23:59:59']);
        $render['start_date']=$request->start_date;
        $render['end_date']=$request->end_date;
    }elseif(isset($request->start_date))
    {
        $revenuedetails=$revenuedetails->where('created_at',$request->start_date);
        $render['start_date']=$request->start_date;
    }        
    if(isset($request->msisdn))
    {
        $revenuedetails=$revenuedetails->where('msisdn','like','%'.$request->msisdn.'%');
        $render['msisdn']=$request->msisdn;
    } 
    if(isset($request->channel))
    {
        $revenuedetails=$revenuedetails->where('channel','like','%'.$request->channel.'%');
        $render['channel']=$request->channel;
    }        
    $revenuedetails= $revenuedetails->orderBy('created_at','DESC');
    $revenuedetails= $revenuedetails->paginate(15);
    $revenuedetails= $revenuedetails->appends($render);
    $data['revenuedetails'] = $revenuedetails;

return view('report.revenueOverall',$data);        
}

Вид:

filter_image

    <div class="row" style="margin-bottom: 10px">
    {{ Form::model(request(),['method'=>'get']) }}
    <div class="col-sm-2">
         {{ Form::text('msisdn',null,['class'=>'form-control','placeholder'=>'MSISDN']) }}
    </div>
    <div class="col-sm-2">
         {{ Form::text('channel',null,['class'=>'form-control','placeholder'=>'Channel']) }}
    </div>        
    <div class="col-sm-3">
        {{ Form::date('start_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
    </div>
    <div class="col-sm-3">
        {{ Form::date('end_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
    </div>           
    <div class="col-xs-2">
        {{ Form::submit('Search',['class'=>'btn btn-warning']) }}
        <a href="{{ route('revenueoverallexport') }}" class="btn btn-primary"><i class="fa fa-file-excel-o"></i> Excel</a>
    </div>
    {{ Form::close() }}
</div>

Из фильтра выше, я могу фильтровать по дате, текстовое поле (канал и MSISSDN). Все работает отлично. Но я хочу направить фильтр в выпадающий фильтр вместо фильтра текстового поля.

Я использую приведенный ниже код для фильтра текстового поля канала, но хочу преобразовать его в раскрывающийся список.

        if(isset($request->channel))
    {
        $revenuedetails=$revenuedetails->where('channel','like','%'.$request->channel.'%');
        $render['channel']=$request->channel;
    }  

Это клинок:

 {{ Form::text('channel',null,['class'=>'form-control','placeholder'=>'Channel']) }}

Поля в таблице:

    tid, created_at,msisdn, channel, amount

Как мне изменить исходный код для достижения этой цели? Обратите внимание, что все из одной таблицы. Следует выбрать отличные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...