Laravel关系关系

时间:2019-10-26 11:03:16

标签: php laravel eloquent foreign-keys relationship

我对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

1 个答案:

答案 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');