我对Laravel雄辩的模型和关系有了解。
我有一个用户表user
。这些用户可以添加汽车牌照,我将其保存在user_plates
中。我有一个包含汽车型号和类型的数据库。表名称为cars
。我有模型App \ User,App \ UserPlates和App \ Car。
user_plates表具有字段id,plate,user_id,car_id
。
我保存了车牌,关联的用户(在user_id中)和选定的汽车(car_id(来自桌车的ID))
我在用户模型中添加了具有plates()
功能的belongTo
,该模型已经成功返回了与该用户相关的所有印版。但是现在我想获取关联的汽车(user_plates内的car_id)。我如何使用Eloquent实现这一目标? car表与用户表没有任何连接,只有user_plates具有car_id和user_id。
我需要实现以下目标:
User -> Plates (can be multiple) -> Plate -> Car
。我知道如何使用简单的MySQL Joins实现此目的,但是我想用Eloquent做到这一点。感谢您的帮助!
Laravel:6.4.0
答案 0 :(得分:1)
因此,如果您的数据库设置为...
users user_plates cars
----- ----------- ----
id id id
etc. plate etc.
user_id
car_id
您的模型设置为...
// in model: User
public function user_plates()
return $this->hasMany('UserPlate'); // fill out fully qualified name as appropriate…
// in model: UserPlate
public function user()
return $this->belongsTo('User');
public function car()
return $this->belongsTo('Car');
// in model: Car
public function user_plates()
return $this->hasMany('UserPlate’);
要退回属于用户$id
的汽车,您应该可以运行:
$cars = User::findOrFail($id)-> user_plates->pluck('car');