当前位置: 首页 > 知识库问答 >
问题:

LARAVEL-如何在3个模型之间创建间接关系

郎飞龙
2023-03-14

我有3个模型:用户、宠物和诊所。

让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所。

在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id。

我想做一些类似的事情:

$user->clinics(); 

在用户模型上,返回与用户关联的所有不同诊所。现在我只能做:

$user->pets()->with('clinics); 

但我只想返回不同的诊所。

用户模态:

public function pets()
{
    return $this->hasMany('Petable\Models\Pet', 'user_id', 'id');
}

宠物模式

public function clinic()
{
    return $this->belongsTo('Petable\Models\Clinic', 'clinic_id', 'id');
}

有什么建议吗?

共有1个答案

暴阳州
2023-03-14

以下内容就足够了:

public function clinics()
{
    return $this->belongsToMany('Petable\Models\Clinic', 'user_pets')->distinct();
}

这样你就可以打电话了

$user->clinics();
 类似资料:
  • 模型(Model)之间存在各种各样的关系,如:一对一(One-To-One )、一对多(One-To-Many)等。模型间的关系本质上是对其代表的数据库中表之间的关系描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的连接查询或复合查询SQL语句。 关系/关联的使用 1.1 一对一(One-To-One)关联 1.2 一对多(One-To-Ma

  • 简介: 我有这些表与他们的模型: 地址表-- 规则: 每个用户只能有一个地址 这里可以进行两种可能的关系规划: > 用户有一个地址和地址属性To User[即一对一关系],但缺点是外键位于地址表中,即user_id字段,通过与其他模型[公司和财产]重复相同的关系,我们将获得地址表中的另外两个外键是[company_id和property_id],那么我们将最终得到3个外键用于3个型号,但每行记录只

  • 首先,我的英语很差,如果我的写作让人困惑,请原谅。 我试图在实例之间创建以下关系:如果,和,那么。在我的例子中,我想指定如果一个“管理”一名员工,并且与有相同的工作,那么他也管理同一名员工。 我尝试使用链属性来实现这一点,但当我激活它时,推理器(事实1.6.5)不起作用(日志显示使用了一个非简单属性)。我认为问题在于属性“manages”是不对称的和不可伸缩的,而属性“sameJob”是可传递的和

  • 仅供参考,我是一个TYPO3菜鸟:)我在我的TYPO3个人网站上做我自己的extbase/流体扩展来管理画廊。现在,我下面这个留档:开发与Extbase和流体TYPO3扩展 目前,我只在Domain/Model中构建了2个类: 加利。php 变量已设置,getter/setter也已设置。 我很清楚我需要在一段关系中把两者联系起来(“1: n”?)但是我不使用扩展生成器,我想自己理解如何做到这一点

  • 问题内容: 我必须链接两个容器,以便它们可以互相看到。当然以下… …在第1行失败,因为容器需要启动并运行才能成为链接目标: 创建双向链接的最简单方法是什么? 问题答案: Docker 1.10通过引入高级容器网络很好地解决了这一问题。(详细信息:https : //docs.docker.com/engine/userguide/networking/dockernetworks/) 首先,创建一

  • 我想创建基于JPA规范的过滤器。我正在使用Spring数据。 我的实体: 实体依赖项为:第1节-一对多- 我有一个转换为规范的问题过滤器类。我想了解第节中的所有问题。 通常,我会使用下面编写的SQL查询来获取部分中的所有问题。 我尝试过使用Join创建规范,但不知道如何在问题上的目标参考不可用时创建连接。