我在Google上做了很多关于此的研究。在模型之间使用这种类型的关系没有很好的例子。
有人可以在Laravel中使用Has-Many-Through关系分享自己的样本吗?
答案 0 :(得分:1)
让我们来看一个社交网络的样本,其中包含用户,他们的朋友和朋友的照片。 3个型号。是的,朋友只是普通用户,但对于这个例子,朋友将是一个单独的模型。
1-用户有朋友
public function friends() {
return $this->hasMany(Friend::class);
}
2 - 朋友有照片
public function photos() {
return $this->hasMany(Photo::class);
}
3 - 你是管理员。你有很多用户,包括约翰。约翰有很多朋友。所以有时候,你想要看到John的朋友照片,也许是他们给他们贴上标签的照片。因此,在用户中,您可以定义关系
public function friendsPhotos() {
return $this->hasManyThrough(Friend::class, Photo::class); //could add a scope here for picture with tags only.
}
不可能是最好的例子。但它显示了如何通过执行
来查看所有John的朋友照片$john = User::where('email', 'john@email.com')->first();
$john->friendsPhotos();
如果这个例子不适合你,现在想想一家银行在特定分行寻找最好的销售人员。分公司有许多销售人员,每个销售人员都有许多客户与他们打交道。
在分支模型中,您可以定义
public function customers() {
return $this->hasManyThrough(Salesperson::class, Customer::class);
}
我希望这会有所帮助。
银行系统的数据库表
1-分支
id
name
...
2 - 销售人员
id
branch_id
firstname
...
3 - 客户
id
salesperson_id
firstname
...