У меня есть полиморфное c отношение многие ко многим User
/ Location
- Group
, но у меня есть время, чтобы пройти базовое c модульное тестирование.
/** @test */
public function it_can_have_groups()
{
$user = factory(User::class)->create();
$group = factory(Group::class)->create();
$user->addToGroup($group);
$this->assertCount(1, $user->groups); // true
$user->removeFromGroup($group);
$this->assertCount(0, $user->groups); // false
}
Эти методы просто вызывают attach
и detach
согласно документации :
Чтобы удалить запись отношения многие-ко-многим, используйте метод detach. Метод detach удалит соответствующую запись из промежуточной таблицы; однако обе модели останутся в базе данных
public function addToGroup(Group $group)
{
$this->groups()->attach($group->id);
}
public function removeFromGroup(Group $group)
{
$this->groups()->detach($group->id));
dump($group->users()); // []
}
Таким образом, это похоже на работу (?), но только со стороны групп, и утверждение все еще не выполняется. Почему и что я должен делать по-другому?