Метод dissociate
Метод dissociate применяется к экземпляру отношения
belongsTo и позволяет удалить связь с родительской
моделью, устанавливая внешний ключ в значение null.
Он не удаляет сами модели из базы данных, а только разрывает
отношение между ними.
Синтаксис
<?php
$child->relation()->dissociate();
?>
Пример
Давайте разорвём связь между комментарием и его автором:
<?php
namespace AppHttpControllers;
use AppModelsComment;
class CommentController extends Controller
{
public function dissociateAuthor($id)
{
$comment = Comment::findOrFail($id);
$comment->author()->dissociate();
$comment->save();
return redirect()->back();
}
}
?>
Результат выполнения кода:
"Author dissociated successfully"
Пример
Рассмотрим пример с отношением belongsTo и проверкой
результата разрыва связи:
<?php
namespace AppHttpControllers;
use AppModelsPost;
use AppModelsUser;
class PostController extends Controller
{
public function dissociateUser($id)
{
$post = Post::findOrFail($id);
if ($post->user) {
$post->user()->dissociate();
$post->save();
$res = "User dissociated from post";
} else {
$res = "Post has no user";
}
echo $res;
}
}
?>
Результат выполнения кода:
"User dissociated from post"