1
0
mirror of synced 2025-02-03 22:09:26 +03:00

79 lines
2.3 KiB
PHP
Raw Normal View History

2017-02-10 17:12:51 +01:00
<?php
namespace Doctrine\Tests\Functional\Ticket;
use Doctrine\Tests\OrmFunctionalTestCase;
/**
* @group #6217
*/
2017-02-10 17:12:51 +01:00
final class GH6217Test extends OrmFunctionalTestCase
{
public function setUp() : void
2017-02-10 17:12:51 +01:00
{
$this->enableSecondLevelCache();
parent::setUp();
$this->_schemaTool->createSchema([
2017-08-22 21:40:42 +02:00
$this->_em->getClassMetadata(GH6217AssociatedEntity::class),
$this->_em->getClassMetadata(GH6217FetchedEntity::class),
]);
2017-02-10 17:12:51 +01:00
}
public function testLoadingOfSecondLevelCacheOnEagerAssociations() : void
2017-02-10 17:12:51 +01:00
{
2017-08-22 21:40:42 +02:00
$lazy = new GH6217AssociatedEntity();
$eager = new GH6217AssociatedEntity();
$fetched = new GH6217FetchedEntity($lazy, $eager);
2017-02-10 17:12:51 +01:00
$this->_em->persist($eager);
$this->_em->persist($lazy);
$this->_em->persist($fetched);
2017-02-10 17:12:51 +01:00
$this->_em->flush();
$this->_em->clear();
$repository = $this->_em->getRepository(GH6217FetchedEntity::class);
$filters = ['eager' => $eager->id];
2017-02-10 17:12:51 +01:00
$this->assertCount(1, $repository->findBy($filters));
$queryCount = $this->getCurrentQueryCount();
/* @var $found GH6217FetchedEntity[] */
$found = $repository->findBy($filters);
$this->assertCount(1, $found);
$this->assertInstanceOf(GH6217FetchedEntity::class, $found[0]);
$this->assertSame($lazy->id, $found[0]->lazy->id);
$this->assertSame($eager->id, $found[0]->eager->id);
$this->assertEquals($queryCount, $this->getCurrentQueryCount(), 'No queries were executed in `findBy`');
2017-02-10 17:12:51 +01:00
}
}
/** @Entity @Cache(usage="NONSTRICT_READ_WRITE") */
2017-08-22 21:40:42 +02:00
class GH6217AssociatedEntity
2017-02-10 17:12:51 +01:00
{
/** @Id @Column(type="string") @GeneratedValue(strategy="NONE") */
2017-02-10 17:12:51 +01:00
public $id;
public function __construct()
2017-02-10 17:12:51 +01:00
{
$this->id = uniqid(self::class, true);
2017-02-10 17:12:51 +01:00
}
}
/** @Entity @Cache(usage="NONSTRICT_READ_WRITE") */
class GH6217FetchedEntity
2017-02-10 17:12:51 +01:00
{
2017-08-22 21:40:42 +02:00
/** @Id @Cache("NONSTRICT_READ_WRITE") @ManyToOne(targetEntity=GH6217AssociatedEntity::class) */
public $lazy;
2017-02-10 17:12:51 +01:00
2017-08-22 21:40:42 +02:00
/** @Id @Cache("NONSTRICT_READ_WRITE") @ManyToOne(targetEntity=GH6217AssociatedEntity::class, fetch="EAGER") */
public $eager;
2017-02-10 17:12:51 +01:00
2017-08-22 21:40:42 +02:00
public function __construct(GH6217AssociatedEntity $lazy, GH6217AssociatedEntity $eager)
2017-02-10 17:12:51 +01:00
{
$this->lazy = $lazy;
$this->eager = $eager;
2017-02-10 17:12:51 +01:00
}
}