1
0
mirror of synced 2025-01-10 11:07:10 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3033Test.php

140 lines
3.0 KiB
PHP
Raw Normal View History

<?php
namespace Doctrine\Tests\ORM\Functional\Ticket;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Event\LifecycleEventArgs;
require_once __DIR__ . '/../../../TestInit.php';
/**
* @group DDC-3033
*/
class DDC3033Test extends \Doctrine\Tests\OrmFunctionalTestCase
{
public function testIssue()
{
$this->_schemaTool->createSchema(array(
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC3033User'),
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC3033Product'),
));
$user = new DDC3033User();
2014-03-19 01:10:15 +04:00
$user->title = "Test User";
$this->_em->persist($user);
$user2 = new DDC3033User();
2014-03-19 01:10:15 +04:00
$user2->title = "Test User 2";
$this->_em->persist($user2);
$product = new DDC3033Product();
2014-03-19 01:10:15 +04:00
$product->title = "Test product";
$product->buyers[] = $user;
2014-03-18 18:04:48 +04:00
$this->_em->persist($product);
$this->_em->flush();
2014-03-19 01:10:15 +04:00
$product->title = "Test Change title";
$product->buyers[] = $user2;
2014-03-18 18:04:48 +04:00
$this->_em->persist($product);
$this->_em->flush();
2014-03-18 18:04:48 +04:00
$expect = array(
'title' => array(
2014-03-18 18:04:48 +04:00
0 => 'Test product',
1 => 'Test Change title',
),
);
2014-03-19 01:10:15 +04:00
$this->assertEquals($expect, $product->changeSet);
}
}
/**
* @Table
* @Entity @HasLifecycleCallbacks
*/
class DDC3033Product
{
public $changeSet = array();
/**
* @var integer $id
*
* @Column(name="id", type="integer")
* @Id
* @GeneratedValue(strategy="AUTO")
*/
2014-03-19 01:10:15 +04:00
public $id;
/**
* @var string $title
*
* @Column(name="title", type="string", length=255)
*/
2014-03-19 01:10:15 +04:00
public $title;
/**
* @ManyToMany(targetEntity="DDC3033User")
* @JoinTable(
2014-03-19 01:10:15 +04:00
* name="user_purchases_3033",
* joinColumns={@JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}
* )
*/
2014-03-19 01:10:15 +04:00
public $buyers;
/**
* Default constructor
*/
public function __construct()
{
$this->buyers = new ArrayCollection();
}
/**
* @PreUpdate
*/
public function preUpdate(LifecycleEventArgs $eventArgs)
{
}
/**
* @PostUpdate
*/
public function postUpdate(LifecycleEventArgs $eventArgs)
{
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
$entity = $eventArgs->getEntity();
$classMetadata = $em->getClassMetadata(get_class($entity));
2014-03-18 18:04:48 +04:00
$uow->computeChangeSet($classMetadata, $entity);
$this->changeSet = $uow->getEntityChangeSet($entity);
}
}
/**
* @Table
* @Entity @HasLifecycleCallbacks
*/
class DDC3033User
{
/**
* @var integer
*
* @Column(name="id", type="integer")
* @Id
* @GeneratedValue(strategy="AUTO")
*/
2014-03-19 01:10:15 +04:00
public $id;
/**
* @var string
*
* @Column(name="title", type="string", length=255)
*/
2014-03-19 01:10:15 +04:00
public $title;
}