Используйте сводные таблицы с разными моделями - PullRequest
0 голосов
/ 07 октября 2019

У меня есть следующие модели:

  • Пользователь
  • Группа пользователей
  • Элемент

Теперь у каждого пользователя есть belongsToManyотношение к Item с осью:

    public function items()
    {
        return $this->belongsToMany(Item::class)
            ->withPivot('value');
    }

Это структура item:

Item

  • title
    • pivot:
      • значение

Пример

User

  • имя: Тим
  • элементы:
    • название: автомобиль
    • значение (ось): 2

Теперь становится сложно: я хотел бы использовать User также в модели UserGroup - и у каждого User должно быть много Item с новой сводной таблицей, этоне совпадает с сводной таблицей, Item имеет, когда это сводка User.

Пример

UserGroup

  • имя: Party-Group
  • пользователи:
    • имя: Тим
    • элементы:
      • название: автомобиль
      • значение (круг): 3

Мой подход

Поэтому я думаю, что единственным возможным решением было бы создание чего-то вроде новой модели под названием UserGroupUser (расширенный от User) с отношением к UserGroupUserItems (расширенныйот Item).

Но может быть, есть более разумный способ сделать это?

1 Ответ

0 голосов
/ 08 октября 2019

Вы можете создать метод users () в группе User следующим образом:

class UserGroup extends Model
{
    public function users()
    {
        return $this->hasMany(User::class);
    }
}

// Then to retrieve your data:
$groups = UserGroup::with('users.items')->get();
dd($groups);
...