day17(?)の今日はエンティティ・モデルのデータに更新があるか(UPDATE文を発行する必要があるか)チェックする方法を見ていきます。
Doctrine
<?php
declare(strict_types=1);
use App\Entity\Book;
use Doctrine\ORM\EntityManagerInterface;
require __DIR__.'/../vendor/autoload.php';
/** @var EntityManagerInterface $entityManager */
$entityManager = require __DIR__.'/bootstrap.php';
$book1 = $entityManager->getRepository(Book::class)->find(1);
$book1->setTitle('Symfony6 The Fast Track');
$entityManager->getUnitOfWork()->computeChangeSets();
if ($entityManager->getUnitOfWork()->isEntityScheduled($book1)) {
echo 'dirty!'.PHP_EOL;
} else {
echo 'not dirty!'.PHP_EOL;
}
- EntityManagerのUnitOfWorkを使い、チェンジセットを計算させて、更新(UPDATE)が必要な状態かどうかを確認します。
Eloquent
<?php
declare(strict_types=1);
use App\Models\Book;
require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/bootstrap.php';
/** @var Book $book1 */
$book1 = Book::find(1);
$book1->title = 'Symfony6 The Fast Track';
if ($book1->isDirty()) {
echo 'dirty!'.PHP_EOL;
} else {
echo 'not dirty!'.PHP_EOL;
}
- モデルの
isDirty()
メソッドを呼ぶだけでできます