雄辩地经历了2对多关系

时间:2018-04-10 12:53:27

标签: laravel eloquent

我有5个看起来像这样的实体:

character --> character_equipement <-- equipement  --> stats_equipement <-- stats

我想为他的所有设备选择一个已定义的角色,并且每个设备都需要统计数据。

角色模型:

    public function equipements(){
    return $this->belongsToMany(EquipementsModel::class, 'stuff_equipement', 'id_stuff','id_equipement');
}

设备型号:

    public function stats(){
    return $this->belongsToMany(Stats::class, 'stats_equipement', 'id_equipement','id_equipement');
}

控制器:

        $stuff = Character::with('equipements')->where('lien_stuff',$id)->first();

这样,我检索定义角色的所有设备。我不知道如何告诉我的角色模型他必须通过Equipements Model来查看统计数据。

我想到了第一种方式,在调用我的控制器时,它将通过设备()然后寻找与他自己的模型的关系......

1 个答案:

答案 0 :(得分:1)

您可以使用点表示法来链接关系。一旦掌握了它,它实际上相当容易。我有点猜测列上的名称是什么加起来,但希望你能得到这个想法。

$character = Character::with('equipements.stats')->where('lien_stuff',$id)->first();

$totalStats = 0;
foreach ($character->equipments as $equipment) {
    foreach ($equipment->stats as $stat) {
        $totalStats += $stat->value;
    }
}