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');
}
}