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

Laravel与onetomany和onetoone

彭衡
2023-03-14

我有以下三个实体:

客户端具有个人id外键和区域id外键。一个人可以有很多客户,每个客户都属于一个地区。我正在尝试使用Laravel中的单个查询获取一个人的客户列表以及每个客户的区域。我曾经亲自与客户建立过很多关系,这很好。我正在尝试使用hasManyThrough方法来查询一个人,并获取他的客户和他们所在的地区,但我无法让它工作!我的关系设置为:

  1. 人有很多客户
  2. 客户属于区域
  3. 人已通过(客户,地区)

但似乎系统不能建立所需的内连接,我得到错误,因为region.person_id不存在!

查询代码为:

$person = Person::with("clients")->get();

就本人而言:

public function clients()
{
    return $this->hasManyThrough(Region::class, Client::class);
}

我试过其他组合,但都没用。我跟着这个https://laravel.com/docs/8.x/eloquent-relationships#has-many-through

谢啦

共有2个答案

卜存
2023-03-14

您应该编写hasManyThrough(Client::class,Region::class) 如果它给出键错误,那么精确地定义键。在hasManyThrough中定义键

return $this->hasManyThrough(Client::class, Region::class);

参考链接

满才
2023-03-14

您可以尝试的一件事是:

$person = Person::with(['client', 'client.region'])->get();

这是假设您在每个模型中都有正确的个体关系。

但是hasManyThrough也应该有效,你能把$person的输出添加到你的问题中吗?

 类似资料:
  • 问题内容: 我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别和联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体与另一个实体有关联,则该关联应来自另一侧。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗? PS:我认为这与问题相关,如果有人可以解释关联

  • toString()]hibernate:/*插入com.pissolato.api.entitys.sale*/插入到sale(company,created,description,discount,sub_value,type,updated,user,value)值(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

  • 问题内容: 我正在使用带有注释的Hibernate(在spring),并且我有一个对象,该对象具有有序的多对一关系,该对象的子对象具有复合主键,该子对象的一个​​组成部分是返回到该对象的外键。父对象的ID。 结构看起来像这样: 我尝试了各种注释的组合,但似乎都不起作用。这是我能想到的最接近的: 经过长时间的实验后,我得出了这一结论,在该尝试中,我进行的其他大多数尝试都产生了由于各种原因甚至无法加载

  • 我有实体项目与投标有一对多的关系 型号/项目。JAVA 模型/投标。JAVA 我想获取一个项目的附加出价,出价是按其金额排序的。但它似乎并不像预期的那样起作用 波斯特数据 选择 输出是

  • 我有6张桌子: 现在,我想添加一个自定义函数到我的雄辩模型中的权限名为getUsersBackPersion()。 现在,用户可能拥有他所赋予的角色的权限(用户表在user_roles上连接,在role_permissions上连接该表,最后一个表在权限上连接。 或者用户在用户权限表中设置了特定权限(在用户表上加入用户权限表,在用户权限表上加入权限表) 如何创建一个雄辩的模型函数,返回所有具有特定

  • 问题内容: 由于使用a 和批注之间都存在一对多关系,因此两者之间有什么区别? 问题答案: 我相信主要用于映射非实体(可嵌入或基本),而用于映射实体。因此,使用哪种取决于您要实现的目标。