首页 > 解决方案 > Laravel 中的三向关系

问题描述

我已经筋疲力尽地搜索和阅读了潜在的解决方案,但我无法理解如何做到这一点,所以我希望这里有人可以帮助我!

我有三个模型:客户、服务和用户。

现实世界的例子:

下图是 DB 设计(不必完全按此实现)。

实现这一点的最佳方法是什么?自定义数据透视表?

在此处输入图像描述

标签: phplaravel

解决方案


如果我理解正确,服务是独立分配给用户的,用户不会自动将所有服务都提供给客户端(hasManyThrough)。

因此,user_services 表可以包含分配给该用户的服务,并带有一个额外的 client_id 字段来指示他们是通过谁分配服务的。

Eloquent 中的关系只是用户和服务之间的 belongsToMany,您需要查询该关系上的客户端 ID。简单地:

public function getServices($client) {
    return $this->services()->where('client_id', $client->id)->get();
}

推荐阅读