2016-11-06 213 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();