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