Laravel hasManyThrough — сохранение не работает

table groups
(
id int auto_increment primary key,
...
);

table users
(
id int auto_increment primary key,
...
);

table user_groups
(
id int auto_increment primary key,
user_id int not null,
group_id int not null,
...
);

В моей модели группы у меня есть отношение hasManyThrough для доступа к пользователям через таблицу ссылок user_groups.

class Group
{
function users()
{
return $this->hasManyThrough('\App\Models\User', '\App\Models\UserGroup', 'group_id', 'id', 'id', 'user_id');
}
}

В моем контроллере:

$user = User::find(2);
$group->users[] = $user;
$group->save();

Так $group->users это коллекция, и я могу добавить своего пользователя, но он не сохраняется.

Как добавить запись на hasManyThrough отношение?

2

Решение

Конечно, вы можете сделать это:

// Find an existing User record
$user = App\User::find(2);

// Creates a new group instance
$group = new App\group(['name' => 'shokry']);

// effectively sets $group->User_id to 2 then saves the instance to the DB
$user->groups()->save($group);

модели

class User extends Model
{
public function groups()
{
return $this->hasMany(App\Group::class);
}
}

class Group extends Model
{
public function user()
{
return $this->belongsTo(App\User::class);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]