Метод persist
Метод persist класса EntityManager переводит сущность
в состояние managed и планирует её вставку
в базу данных. Первым параметром передаётся объект сущности.
Сам по себе метод не выполняет SQL-запрос, а лишь
регистрирует сущность для последующего сохранения.
Непосредственная запись в базу происходит при вызове
метода flush. Если сущность уже управляется
менеджером, повторный вызов persist ничего
не меняет.
Синтаксис
$em->persist($entity);
Пример
Давайте создадим сущность и сохраним её в базу данных:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function create(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('hello');
$article->setText('abcde');
$em->persist($article);
$em->flush();
return new Response('saved id: ' . $article->getId());
}
}
?>
Результат выполнения кода:
saved id: 1
Пример
Давайте сохраним сразу несколько сущностей за один вызов flush:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function createMany(EntityManagerInterface $em): Response
{
$titles = ['abcde', 'article', 'user', 'hello'];
foreach ($titles as $title) {
$article = new Article();
$article->setTitle($title);
$article->setText('text');
$em->persist($article);
}
$em->flush();
return new Response('saved ' . count($titles) . ' articles');
}
}
?>
Результат выполнения кода:
saved 4 articles
Смотрите также
-
класс
EntityManager,
который управляет сущностями Doctrine -
метод
flush,
который выполняет запись изменений в базу данных -
метод
remove,
который помечает сущность на удаление -
метод
find,
который находит сущность по первичному ключу