Laravel красноречивые сложные вложенные отношения (3 таблицы для модели) - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы получить сложные вложенные отношения:

игрок

предметов

статистика

драгоценные камни

Вот как это работает: игрок берет несколько предметов и кладет немного драгоценные камни на каждой статистике

Было бы довольно легко получить все оборудование игрока с его статистикой, используя это:

Player::with(['items.stats'])->get(1);

______________________________________

Player.php

        return $this->belongsToMany(Item::class, 'player_items', 'id_player', 'id_item');

______________________________________

Item.php

        return $this->belongsToMany(Statistics::class, 'items_statistics', 'id_item', 'id_statistic');

Но как я могу получить все драгоценные камни, которые помещают игрока в каждую статистику, когда он захватывает предмет?

Очевидно, что добавление таких отношений не поможет:

Statistics.php
        return $this->belongsToMany(Gems::class, 'player_items_statistics_gems', ????, ????);

И вызов этого значения Player::with(['items.stats.gems'])->get(1), поскольку все отношения от предметы и игрок будут потеряны, Laravel получит все драгоценные камни всех игроков за указанную статистику c.

Возможно ли go так глубоко при энергичной загрузке Laravel?

РЕДАКТИРОВАТЬ: Вот схема таблицы

players
+-----------+-------------+
| id_player | name_player |
+-----------+-------------+
|         1 | Abi         |
|         2 | Bia         |
+-----------+-------------+

items
+---------+-----------+
| id_item | name_item |
+---------+-----------+
|       1 | Morpheus  |
|       2 | Excalibur |
+---------+-----------+

statistics
+--------------+----------------+
| id_statistic | name_statistic |
+--------------+----------------+
|            1 | Strength       |
|            2 | Wisdom         |
+--------------+----------------+

gems
+--------+-------------+
| id_gem |  name_gem   |
+--------+-------------+
|      1 |   Invisible |
|      2 |   Fly       |
|      3 |   Death     |
+--------+-------------+

And the pivot tables : 

player_items :
+-----------+---------+
| id_player | id_item |
+-----------+---------+
|         1 |       1 |
|         1 |       2 |
|         2 |       2 |
+-----------+---------+

player_items_statistics_gems
+-----------+---------+---------------+---------+
| id_player | id_item |  id_statistic |  id_gem |
+-----------+---------+---------------+---------+
|         1 |       1 |             1 |       1 |
|         1 |       1 |             2 |       3 |
|         1 |       2 |             1 |       3 |
+-----------+---------+---------------+---------+


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...