DDC-1181 - Add test that verifies cascade remove works for entities with foreign identifiers
This commit is contained in:
parent
ddb647f39f
commit
d3ab9b51fa
101
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1181Test.php
Normal file
101
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1181Test.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||
|
||||
require_once __DIR__ . '/../../../TestInit.php';
|
||||
|
||||
class DDC1181Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$this->_schemaTool->createSchema(array(
|
||||
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1181Hotel'),
|
||||
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1181Booking'),
|
||||
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1181Room'),
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group DDC-1181
|
||||
*/
|
||||
public function testIssue()
|
||||
{
|
||||
$hotel = new DDC1181Hotel();
|
||||
$room1 = new DDC1181Room();
|
||||
$room2 = new DDC1181Room();
|
||||
|
||||
$this->_em->persist($hotel);
|
||||
$this->_em->persist($room1);
|
||||
$this->_em->persist($room2);
|
||||
$this->_em->flush();
|
||||
|
||||
$booking1 = new DDC1181Booking;
|
||||
$booking1->hotel = $hotel;
|
||||
$booking1->room = $room1;
|
||||
$booking2 = new DDC1181Booking;
|
||||
$booking2->hotel = $hotel;
|
||||
$booking2->room = $room2;
|
||||
$hotel->bookings[] = $booking1;
|
||||
$hotel->bookings[] = $booking2;
|
||||
|
||||
$this->_em->persist($booking1);
|
||||
$this->_em->persist($booking2);
|
||||
$this->_em->flush();
|
||||
|
||||
$this->_em->remove($hotel);
|
||||
$this->_em->flush();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
*/
|
||||
class DDC1181Hotel
|
||||
{
|
||||
/** @Id @Column(type="integer") @GeneratedValue */
|
||||
public $id;
|
||||
|
||||
/**
|
||||
* @oneToMany(targetEntity="DDC1181Booking", mappedBy="hotel", cascade={"remove"})
|
||||
* @var Booking[]
|
||||
*/
|
||||
public $bookings;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
*/
|
||||
class DDC1181Booking
|
||||
{
|
||||
/**
|
||||
* @var Hotel
|
||||
*
|
||||
* @Id
|
||||
* @ManyToOne(targetEntity="DDC1181Hotel", inversedBy="bookings")
|
||||
* @JoinColumns({
|
||||
* @JoinColumn(name="hotel_id", referencedColumnName="id")
|
||||
* })
|
||||
*/
|
||||
public $hotel;
|
||||
/**
|
||||
* @var Room
|
||||
*
|
||||
* @Id
|
||||
* @ManyToOne(targetEntity="DDC1181Room")
|
||||
* @JoinColumns({
|
||||
* @JoinColumn(name="room_id", referencedColumnName="id")
|
||||
* })
|
||||
*/
|
||||
public $room;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
*/
|
||||
class DDC1181Room
|
||||
{
|
||||
/** @Id @Column(type="integer") @GeneratedValue */
|
||||
public $id;
|
||||
}
|
Loading…
Reference in New Issue
Block a user