Метод detach
Метод detach применяется к объекту отношения belongsToMany
и удаляет записи из промежуточной таблицы (pivot-таблицы),
соответствующие указанным связанным моделям.
Если передать идентификаторы моделей, будут удалены только
связи с этими моделями. Если вызвать метод без параметров,
будут удалены все связи для текущей модели.
Метод возвращает количество удалённых записей.
Синтаксис
<?php
$model->relation()->detach($ids);
?>
Пример
Давайте удалим все связи у пользователя с id равным 1:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class UserController extends Controller
{
public function detachAll()
{
$user = User::find(1);
$res = $user->roles()->detach();
echo $res;
}
}
?>
Результат выполнения кода:
"3"
Пример
Давайте удалим связь пользователя с конкретной ролью,
у которой id равен 2:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class UserController extends Controller
{
public function detachOne()
{
$user = User::find(1);
$res = $user->roles()->detach(2);
echo $res;
}
}
?>
Результат выполнения кода:
"1"
Пример
Давайте удалим связи пользователя с несколькими ролями, передав массив идентификаторов:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class UserController extends Controller
{
public function detachMultiple()
{
$user = User::find(1);
$ids = [2, 3, 5];
$res = $user->roles()->detach($ids);
echo $res;
}
}
?>
Результат выполнения кода:
"3"
Пример
Метод detach также можно использовать с дополнительными
условиями через метод wherePivot:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class UserController extends Controller
{
public function detachWithCondition()
{
$user = User::find(1);
$res = $user->roles()
->wherePivot('created_at', '<', '2024-01-01')
->detach();
echo $res;
}
}
?>
Результат выполнения кода:
"2"
Смотрите также
-
метод
attach,
который добавляет связи многие-ко-многим -
метод
sync,
который синхронизирует связи многие-ко-многим -
метод
toggle,
который переключает состояние связей -
метод
syncWithoutDetaching,
который синхронизирует без удаления существующих связей