我完全在undefined variable $jenis_mobil上获得$q->where('name', $jenis_mobil->name)

    $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

最佳答案

您应该使用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();

关于Laravel 5.2 : Undefined Variable in WhereHas,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40446296/

10-11 08:43