gpt4 book ai didi

php - Laravel 5 Hasmanythrough 逆向查询

转载 作者:行者123 更新时间:2023-11-29 01:20:17 28 4
gpt4 key购买 nike

我有 3 个模型:Vehicle、Dealer 和 Province

Eloquent关系如下:

Vehicle belongsTo Dealer

Dealer hasMany Vehicles

Province hasMany Dealers

Dealer belongs to Province

Province hasManyThrough Vehicles

我想获取特定省份的所有车辆,但我的代码需要从车辆模型开始调用,因为我正在调用许多过滤器到 Vehicles。

我的代码:

    $p = 'Alberta';
$d = Vehicle::whereHas('province', function($q) use ($p) {
$q->where('province_name', $p);
return $q;
})->get();
dd($d);

不幸的是得到了错误

Column not found: 1054 Unknown column 'dealers.province_id' in 'where clause' (SQL: select * from vehicles where exists (select * from provinces where dealers.province_id = provinces.id and province_name = Alberta))

但是 dealers 表中确实存在 province_id 列。我怎样才能让它发挥作用?

最佳答案

HasManyThrough 关系没有逆关系。您的省份可以通过经销商拥有许多车辆,但您的车辆不属于一个省份。您的车辆属于某个省份的经销商。

正因为如此,你的whereHas需要指定嵌套关系:

$p = 'Alberta';
$d = Vehicle::whereHas('dealer.province', function($q) use ($p) {
return $q->where('province_name', $p);
})->get();
dd($d);

关于php - Laravel 5 Hasmanythrough 逆向查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159285/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com