2016-11-06 114 views
1

未定义的变量,我得到确切undefined variable $jenis_mobil$q->where('name', $jenis_mobil->name)Laravel 5.2:在WhereHas

$jenis_mobil = Car_class::find($request->jenis_mobil); 
    $dari_kota = City::find($request->dari_kota);  

    $vehicles = Vehicle::whereHas('car', function($q){ 
     $q->whereHas('car_class', function($q){ 
      $q->where('name', $jenis_mobil->name); 
     }); 
    }) 
    ->whereHas('partner', function($q) { 
     $q->whereHas('kota_pool', function($q){ 
      $q->where('name', $dari_kota->name); 
     }); 
    }) 
    ->where('year', $request->tahun_mobil) 
    ->get(); 

是什么错我的代码?我想是因为$jenis_mobil不会传递到whereHas

回答

4

您应该使用use()传递变量进入封闭:

$vehicles = Vehicle::whereHas('car', function($q) use($jenis_mobil) { 
    $q->whereHas('car_class', function($q) use($jenis_mobil) { 
     $q->where('name', $jenis_mobil->name); 
    }); 
}) 
->whereHas('partner', function($q) use ($dari_kota) { 
    $q->whereHas('kota_pool', function($q) use ($dari_kota) { 
     $q->where('name', $dari_kota->name); 
    }); 
}) 
->where('year', $request->tahun_mobil) 
->get();