gpt4 book ai didi

mysql - Laravel 5.1 一对多和多对多模型的远程关系

转载 作者:行者123 更新时间:2023-11-29 21:28:55 25 4
gpt4 key购买 nike

我配置了 5 个模型。客户、环境、对象、服务角色和服务。我已经在每个模型中建立了适当的 Eloquent 关系。

客户有很多环境。

//Customer Model    
public function environments()
{
return $this->hasMany('App\Environment');
}

环境属于一个客户。
环境属于许多对象。

//Environment Model   
public function customer()
{
return $this->belongsTo('App\Customer');
}

public function objects()
{
return $this->belongsToMany('App\Object');
}

对象属于许多环境。
对象属于许多服务角色。

//Object Model
public function environments()
{
return $this->belongsToMany('App\Environment');
}

public function serviceRoles()
{
return $this->belongsToMany('App\ServiceRole');
}

ServiceRoles 属于许多对象。
ServiceRoles属于一个Service。

//ServiceRole Model
public function objects()
{
return $this->belongsToMany('App\Object');
}

public function service()
{
return $this->belongsTo('App\Service');
}

服务属于许多服务角色。

public function serviceRoles()
{
return $this->hasMany('App\ServiceRole');
}

--SQL--
客户:ID、姓名
对象:id、名称
环境:id、名称、customer_id
environment_object:id、environment_id、object_id
service_roles:id、名称、service_id
object_service_role:id、object_id、service_role_id
服务:ID、名称

1) 检索与客户关联的所有对象(跨所有相关环境)的最简单方法是什么?

希望做类似的事情:$customer->objects

2) 如何检索与客户关联的对象的所有服务,因为每个对象都有一个映射到服务的 ServiceRole。

希望做类似的事情:$customer->services

最佳答案

最好能发布你所有的关系。但如果您说您已经适本地建立了人际关系,那么以下内容应该有效。

 1. Customer::with('environments.objects')->get();

但如果它只是针对一个客户

 Custmer::with('environments.objects')->find($id);


2. Customer::with('environments.objects.roles')->get();

仅供客户使用

 Customer::with('environments.objects.roles')->find($id);

关于mysql - Laravel 5.1 一对多和多对多模型的远程关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com