首页 > 解决方案 > Laravel 自定义关系

问题描述

我有 3 个模型公司、计划和服务。我想要做的是每个公司都应该有 3-4 个计划,每个计划都有自己提供的服务。

每家公司可能有不同的计划,对于这些计划,他们可能有不同的服务。

我为计划创建了一个称为 Planable 的多对多多态关系,该表将包含公司的计划和这些计划的服务。但我无法检索特定公司计划的服务。

$company = Company::findOrFail($id);

foreach ($company->plans as $plan){
   return $plan->services;
}

这是行不通的,它只显示一项服务,并且将每家公司与其计划和服务分开。

我想把它变成这样$company->plans->services

关系:

class Plan extends Model
{
    public function companies(){
        return $this->morphedByMany('App\Company', 'planable');
    }

    public function services(){
        return $this->morphedByMany('App\Service', 'planable');
    }
}
class Company extends Model
{
    public function plans(){
        return $this->morphToMany('App\Plan', 'planable');
    }
}
class Service extends Model
{
    public function plans(){
        return $this->morphToMany('App\Plan', 'planable');
    }
}

标签: phplaravellaravel-5eloquentrelational-database

解决方案


推荐阅读