2016-10-02 5 views
0

車のカタログにAJAXフィルタを作成しようとしています。「SALES_NAMEがリクエストされている場合はフィルタリングします(DBからフィルタに追加してください)」それをする方法を理解していない。Laravel 5.2複数のパラメータによるAJAXフィルタ

私には、製造元、モデル、所有者のパラメータがあります。私はそれらのいずれかで車をフィルタリングしたい。私がトヨタを選んだ場合、所有者のすべての車、例えば、すべてのtoyotas、または所有者の名前BobのすべてのToyotasを返すことになります。ここに私のビューの一部である:

{!! Form::open(['id'=>'filter']) !!} 
{{csrf_field()}} 
<div class="form-group col-sm-2"> 
    {!! Form::select('sales_id', ['' => 'Owner'] + $sales, null, ['class'=>'form-control', 'id'=>'sales_id']) !!} 
</div> 
<div class="form-group col-sm-2"> 
    {!! Form::select('manufacturer_id', ['' => 'Manufacturer'] + $manufacturers, null, ['class'=>'form-control', 'id'=>'manufacturer_id']) !!} 
</div> 
<div class="form-group col-sm-1"> 
    <button type="button" class="btn btn-start" data-toggle="modal" data-target="#addmanufacturer "> 
     <i class="fa fa-plus" aria-hidden="true"></i> 
    </button> 
</div> 
<div class="form-group col-sm-2"> 
    {!! Form::select('model_id', ['' => 'Model'], null, ['class'=>'form-control', 'id'=>'model_id']) !!} 
</div> 
<div class="form-group col-sm-1"> 
    <button type="button" class="btn btn-start" data-toggle="modal" data-target="#addmodel"> 
     <i class="fa fa-plus" aria-hidden="true"></i> 
    </button> 
</div> 
<button type="submit" class="btn"><i class="fa fa-search" aria-hidden="true"></i></button> 
{!! Form::close() !!} 

JS:

$('#manufacturer_id').on('change', function(e){ 
     var man_id = e.target.value; 
     $.get('/admin/getmodels/models?man_id=' + man_id, function(data){ 
      $('#model_id').empty(); 
      $.each(data, function(index, model){ 
       $('#model_id').append('<option value="' + model.id+'">' 
         + model.name + ' ' + model.year + '</option>'); 
      }); 
     }); 
    }); 

    $('#filter').submit(function(event) { 
     event.preventDefault(); 
     $('#cars').empty(); 
     $.post('/admin/getmodels/carfilter', $('#filter').serialize(), function (cars) { 
       $.each(cars, function (index, car) { 
        $.post('/admin/getmodels/car', {car_id: car.id}, function (car) { 
         $('#cars').append('<div class="col-sm-2" id="car'+car.id+'"></div>'); 
         if (car.photos.length > 0) { 
          $.each(car.photos, function (index, photo) { 
           if (index == 0) { 
            $('#car' + car.id).append('<img class="img img-responsive" src="' + photo.file + '">').append('<div class="header header4 text-center">'+car.manufacturer.name+' '+car.model.name+' '+car.model.year+'</div>'); 
           } 
          }); 
         } else { 
          $.each(car.modelphoto, function (index, photo) { 
           if (index == 0) { 
            $('#car' + car.id).append('<img class="img img-responsive" src="' + photo.file + '">').append('<div class="header header4 text-center">'+car.manufacturer.name+' '+car.model.name+' '+car.model.year+'</div>'); 
           } 
          }); 
         } 
        }); 
       }); 
      }); 
     }); 

コントローラ、そのi'amわから正しくないが、それは私がやりたいように見えるです:

​​

モデル:

class Car extends Model 
{ 
public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function manufacturer(){ 
    return $this->belongsTo('App\Manufacturer'); 
} 

public function model(){ 
    return $this->belongsTo('App\CarModel'); 
} 

public function photos(){ 
    return $this->morphMany('App\Photo', 'imageable'); 
} 

} 

class User extends Authenticatable 
{ 
public function car() { 
    return $this->hasMany('App\Car'); 
} 
} 

class Manufacturer extends Model 
{ 

public function car() { 
    return $this->hasMany('App\Car'); 
} 

public function model() { 
    return $this->hasMany('App\CarModel'); 
} 
} 

class CarModel extends Model 
{ 

public function car() { 
    return $this->hasMany('App\Car'); 
} 

public function manufacturer(){ 
    return $this->belongsTo('App\Manufacturer'); 
} 
} 

答えて

0

[OK]を、私は持っている

public function postCarfilter(Request $request) 
{ 

    $cars = DB::table('cars'); 
    if ($request->sales_id != ""){ 
     $cars->where('user_id', $request->sales_id); 
    } 

    if ($request->manufacturer_id != ""){ 
     $cars->where('manufacturer_id', $request->manufacturer_id); 
    } 

    if ($request->model_id != ""){ 
     $cars->where('model_id', $request->model_id); 
    } 

    return Response::json($cars->get()); 
} 

多分それが誰か

のために有用であろう:Oので、新しいコントローラ、クエリビルダを使用します