BeginnerEngineerBlog
中の人
中の人

【Symfony】entityManagerでpersistされているかどうか判定する

公開: 2022-02-21 15:31
更新: 2023-05-18 01:45
1101
symfony4.x EntityManager persist メモ UnitOfWork
symfonyのentityManagerでentityが管理下にあるかどうかを判定する方法を紹介します。

こんにちは!

中の人です!

Symfony4.x系で、データ保存する時、entityManagerでpersistしてflushするじゃないですか?

この時、ちゃんとpersistでentityManagerの管理下にセットされているか判定したい時ってありますよね?

あーなるほどなるほど。ないですね!

さぁ需要があってもなくても、いつも通り誰かの参考になるために紹介していきますよ!


判定の仕方


📁 HogeController

<?php

namespace Hoge/Controller;

use Hoge\Entity\HogeEntity;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class HogeController extends Controller
{
    private $entityManager;

    public function __construct(
        EntityManagerInterface $entityManager
    ) {
        $this->entityManager = $entityManager;
    }

    public function piyoAction(Request $request)
    {
        // HogeEntityを新しく作成
        $hogeEntity = new HogeEntity();
           // $hogeEntityのプロパティに適当に値をセット
        $hogeEntity->setName('おすおす斉藤');
        // \Doctrine\ORM\UnitOfWorkのインスタンスを取得
        $uow = $this->entityManager->getUnitOfWork();
        // $uowのisEntityScheduledアクションに作成したhogeEntityを引数で渡す
        $before_exist = $uow->isEntityScheduled($hogeEntity);// false
           // entityManagerのpersistアクションで$hogeEntityをentityManagerの管理下に置く
        $this->entityManager->persist($hogeEntity);
        // $uowのisEntityScheduledアクションにentityManagerの管理下に置いた$hogeEntityを引数で渡す
        $after_exist = $uow->isEntityScheduled($hogeEntity);// true
        return;
    }
}

$uow = $this->entityManager->getUnitOfWork();
$exist = $uow->isEntityScheduled($hogeEntity);// true|false

これでそのentityがentityManagerの管理下にあるかどうか判定できます。


終わりに


以上です。

ではまた!
0
0
0
0
通信エラーが発生しました。
似たような記事