PivotModel расширяет Pivot в laravel, как получить данные отношения PivotModel - PullRequest
0 голосов
/ 07 мая 2018

Я хочу управлять пользователем и ролью с помощью PivotModel, например, роли User ownToMany и пользователей Role ownToMany, поэтому имя модели Pivot PivotModel, расширяющее Pivot, как установить связь с PivotModel и User, получить данные из PivotModel, например, как PivotModel с пользователями, где role_id = 1

Ответы [ 2 ]

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

Не делайте модель для своего Pivot; это не нужно Если у вас есть Модели как для роли, так и для пользователя, вы можете определить отношения как:

// User Model
public function roles(){
   return $this->belongsToMany(Role::class, $table, $foreignKey, $localKey);
}

// Role Model
public function users(){
   return $this->belongsToMany(User::class, $table, $foreignKey, $localKey);
}

Просто убедитесь, что значения $table, $foreignKey и $localKey заменены значениями. Laravel может выяснить их, если имена таблиц / столбцов совпадают (roles_users, user_id, role_id, id и т. Д.)

Затем, если есть какие-либо данные, к которым вы хотите получить доступ из строк сводки, добавьте

return $this->belongsToMany(...)->withPivot(["column_1", "column_2", ...]);

Затем вы можете получить к ним доступ, используя аксессор ->pivot->{column}:

foreach($user->roles AS $role){
  dd($role->pivot->column_1); // Etc.
}

Существует множество пакетов, которые делают это для вас, например, Cartalyst Sentinel (https://cartalyst.com/manual/sentinel/2.0),, поэтому посмотрите их для получения дополнительной информации.

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

Я почти уверен, что $model->pivot даст вам доступ к любым данным в соответствующих записях сводной таблицы, независимо от того, как называется эта таблица или есть ли у вас класс модели для нее, если ваши методы отношения модели настроены как многие ко многим.

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