Метод contains
Метод contains класса EntityManager
проверяет, управляется ли переданная сущность
данным менеджером сущностей. Первым параметром
передаётся объект сущности. Метод возвращает
true, если сущность находится в состоянии
managed, и false в противном случае.
Сущность считается управляемой после вызова
persist или после загрузки из базы данных
через find, getRepository и подобные
методы. Если сущность была отсоединена через
detach или clear, метод вернёт
false.
Синтаксис
$em->contains($entity)
Пример
Давайте создадим сущность и проверим, управляется
ли она менеджером до вызова persist:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('abcde');
$res = $em->contains($article);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Теперь вызовем persist и снова проверим
сущность:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('abcde');
$em->persist($article);
$res = $em->contains($article);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте отсоединим сущность через detach
и проверим её снова:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('abcde');
$em->persist($article);
$em->detach($article);
$res = $em->contains($article);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Смотрите также
-
класс
EntityManager,
который управляет сущностями Doctrine -
метод
persist,
который делает сущность управляемой -
метод
detach,
который отсоединяет сущность от менеджера -
метод
clear,
который отсоединяет все сущности сразу