Merge branch 'backport/fix/l2c-version' into 2.6
Backporting https://github.com/doctrine/doctrine2/pull/7069
This commit is contained in:
commit
794c7708e8
@ -75,6 +75,10 @@ class DefaultEntityHydrator implements EntityHydrator
|
|||||||
$data = $this->uow->getOriginalEntityData($entity);
|
$data = $this->uow->getOriginalEntityData($entity);
|
||||||
$data = array_merge($data, $metadata->getIdentifierValues($entity)); // why update has no identifier values ?
|
$data = array_merge($data, $metadata->getIdentifierValues($entity)); // why update has no identifier values ?
|
||||||
|
|
||||||
|
if ($metadata->isVersioned) {
|
||||||
|
$data[$metadata->versionField] = $metadata->getFieldValue($entity, $metadata->versionField);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($metadata->associationMappings as $name => $assoc) {
|
foreach ($metadata->associationMappings as $name => $assoc) {
|
||||||
if ( ! isset($data[$name])) {
|
if ( ! isset($data[$name])) {
|
||||||
continue;
|
continue;
|
||||||
|
69
tests/Doctrine/Tests/ORM/Functional/Ticket/GH7067Test.php
Normal file
69
tests/Doctrine/Tests/ORM/Functional/Ticket/GH7067Test.php
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||||
|
|
||||||
|
final class GH7067Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||||
|
{
|
||||||
|
public function setUp() : void
|
||||||
|
{
|
||||||
|
$this->enableSecondLevelCache();
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->setUpEntitySchema([GH7067Entity::class]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group 7067
|
||||||
|
*/
|
||||||
|
public function testSLCWithVersion() : void
|
||||||
|
{
|
||||||
|
$entity = new GH7067Entity();
|
||||||
|
$entity->lastUpdate = new \DateTime();
|
||||||
|
|
||||||
|
$this->_em->persist($entity);
|
||||||
|
$this->_em->flush();
|
||||||
|
$this->_em->clear();
|
||||||
|
|
||||||
|
/** @var GH7067Entity $notCached */
|
||||||
|
$notCached = $this->_em->find(GH7067Entity::class, $entity->id);
|
||||||
|
|
||||||
|
self::assertNotNull($notCached->version, 'Version already cached by persister above, it must be not null');
|
||||||
|
|
||||||
|
$notCached->lastUpdate = new \DateTime();
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
$this->_em->clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity()
|
||||||
|
* @Cache(usage="NONSTRICT_READ_WRITE")
|
||||||
|
*/
|
||||||
|
class GH7067Entity
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @Id
|
||||||
|
* @GeneratedValue
|
||||||
|
* @Column(type="integer")
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(type="datetime")
|
||||||
|
*
|
||||||
|
* @var \DateTime
|
||||||
|
*/
|
||||||
|
public $lastUpdate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(type="datetime")
|
||||||
|
* @Version
|
||||||
|
*
|
||||||
|
* @var \DateTime
|
||||||
|
*/
|
||||||
|
public $version;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user