Laravel запрос отношения многие ко многим - PullRequest
0 голосов
/ 23 мая 2018

Я создаю приложение Laravel с таблицей пользователей и таблицей действий и отношением «многие ко многим» между действиями и пользователями, реализованными с помощью сводной таблицы, называемой назначениями:

  • users: id, ...
  • деятельности: идентификатор, ...
  • назначения: идентификатор, идентификатор_ действия, идентификатор_пользователя, ...

Мне нужно вести учеткаждый раз, когда пользователь завершает действие.Пользователь может выполнять одно и то же действие много раз.Я пытаюсь выбрать лучший способ моделировать это в базе данных.Насколько я вижу, есть следующие варианты:

  1. завершение таблицы: id, assignment_id, ...
  2. завершение второй сводной таблицы: id, activity_id, user_id, ...

Я могу создавать миграции и т. Д. Однако я борюсь с классами Model и их методами отношений.В частности, для первого варианта, описанного выше, как мне определить необходимые классы модели и методы отношений?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

создать activity_user таблицу и просто добавить activity_id и user_id.столбец id не нужен для этого.Затем добавьте эти коды в модель пользователя:

public function activity()
{
    return $this->belongsToMany('App\Activity', 'activity_user', 'user_id', 'activity_id');
}

Если я правильно понимаю, больше ничего не нужно.

0 голосов
/ 23 мая 2018

Ну, у вас есть почти все, кроме отслеживания активности.Итак, вот что я предлагаю:

таблица пользователей

с идентификаторами столбцов, именем, адресом электронной почты и т. Д.

таблица действий

с идентификатором столбца, именем и т. Д.

таблица user_activity (сводная)

с идентификатором столбца, user_id, activity_id и т. Д. Эта таблица будет содержатьсопоставление между многими пользователями и действиями.

activity_tracking

с идентификаторами столбцов, user_activity_id, status, updated_at и т. д. Здесь можно использовать целочисленное значение для статуса, чтобы обозначить завершениескажем 1. И с помощью updated_at и create_at вы можете отслеживать время начала и окончания активности.

...