Mir*_* Vu 2 php mysql laravel eloquent laravel-5
我有3个型号:车辆,经销商和省
雄辩的关系如下:
车辆属于经销商
经销商有很多车辆
省有很多经销商
经销商属于省
省有很多车辆
我想让所有车辆都在特定的省份,但是我的代码需要从车辆模型开始调用,因为我正在为车辆调用许多过滤器.
我的代码:
$p = 'Alberta';
$d = Vehicle::whereHas('province', function($q) use ($p) {
$q->where('province_name', $p);
return $q;
})->get();
dd($d);
Run Code Online (Sandbox Code Playgroud)
不幸得到错误
未找到列:1054'where子句'中的未知列'dealers.province_id'(SQL:select*from
vehicleswhere exists(select*fromprovinceswheredealers.province_id=provinces.idandprovince_name= Alberta))
但是$$_id列确实存在于经销商表中.我怎样才能使它工作?
这种HasManyThrough关系没有反过来.您的省可以通过经销商拥有许多车辆,但您的车辆不属于省.您的车辆属于属于省份的经销商.
因此,您whereHas需要指定嵌套关系:
$p = 'Alberta';
$d = Vehicle::whereHas('dealer.province', function($q) use ($p) {
return $q->where('province_name', $p);
})->get();
dd($d);
Run Code Online (Sandbox Code Playgroud)