[DDC-1939] Add test for persistent collection delete with composite key
This commit is contained in:
parent
aa0cb0b6d7
commit
354fa14df4
@ -30,12 +30,25 @@ class NavPointOfInterest
|
|||||||
*/
|
*/
|
||||||
private $country;
|
private $country;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ManyToMany(targetEntity="NavUser", cascade={"persist"})
|
||||||
|
* @JoinTable(name="navigation_pois_visitors",
|
||||||
|
* inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
|
||||||
|
* joinColumns={
|
||||||
|
* @JoinColumn(name="poi_long", referencedColumnName="nav_long"),
|
||||||
|
* @JoinColumn(name="poi_lat", referencedColumnName="nav_lat")
|
||||||
|
* }
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
private $visitors;
|
||||||
|
|
||||||
public function __construct($lat, $long, $name, $country)
|
public function __construct($lat, $long, $name, $country)
|
||||||
{
|
{
|
||||||
$this->lat = $lat;
|
$this->lat = $lat;
|
||||||
$this->long = $long;
|
$this->long = $long;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->country = $country;
|
$this->country = $country;
|
||||||
|
$this->visitors = new \Doctrine\Common\Collections\ArrayCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLong() {
|
public function getLong() {
|
||||||
@ -53,4 +66,14 @@ class NavPointOfInterest
|
|||||||
public function getCountry() {
|
public function getCountry() {
|
||||||
return $this->country;
|
return $this->country;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addVisitor(NavUser $user)
|
||||||
|
{
|
||||||
|
$this->visitors[] = $user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVisitors()
|
||||||
|
{
|
||||||
|
return $this->visitors;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
28
tests/Doctrine/Tests/Models/Navigation/NavUser.php
Normal file
28
tests/Doctrine/Tests/Models/Navigation/NavUser.php
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Doctrine\Tests\Models\Navigation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity
|
||||||
|
* @Table(name="navigation_users")
|
||||||
|
*/
|
||||||
|
class NavUser
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @Id
|
||||||
|
* @Column(type="integer")
|
||||||
|
* @generatedValue
|
||||||
|
*/
|
||||||
|
private $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @column(type="string")
|
||||||
|
*/
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
public function __construct($name)
|
||||||
|
{
|
||||||
|
$this->name = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ use Doctrine\Tests\Models\Navigation\NavCountry;
|
|||||||
use Doctrine\Tests\Models\Navigation\NavPointOfInterest;
|
use Doctrine\Tests\Models\Navigation\NavPointOfInterest;
|
||||||
use Doctrine\Tests\Models\Navigation\NavTour;
|
use Doctrine\Tests\Models\Navigation\NavTour;
|
||||||
use Doctrine\Tests\Models\Navigation\NavPhotos;
|
use Doctrine\Tests\Models\Navigation\NavPhotos;
|
||||||
|
use Doctrine\Tests\Models\Navigation\NavUser;
|
||||||
|
|
||||||
require_once __DIR__ . '/../../TestInit.php';
|
require_once __DIR__ . '/../../TestInit.php';
|
||||||
|
|
||||||
@ -118,4 +119,26 @@ class CompositePrimaryKeyTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->setExpectedException('Doctrine\ORM\ORMException', 'The identifier long is missing for a query of Doctrine\Tests\Models\Navigation\NavPointOfInterest');
|
$this->setExpectedException('Doctrine\ORM\ORMException', 'The identifier long is missing for a query of Doctrine\Tests\Models\Navigation\NavPointOfInterest');
|
||||||
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('key1' => 100));
|
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('key1' => 100));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group DDC-1939
|
||||||
|
*/
|
||||||
|
public function testDeleteCompositePersistentCollection()
|
||||||
|
{
|
||||||
|
$this->putGermanysBrandenburderTor();
|
||||||
|
|
||||||
|
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200));
|
||||||
|
$poi->addVisitor(new NavUser("test1"));
|
||||||
|
$poi->addVisitor(new NavUser("test2"));
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$poi->getVisitors()->clear();
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
$this->_em->clear();
|
||||||
|
|
||||||
|
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200));
|
||||||
|
$this->assertEquals(0, count($poi->getVisitors()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,6 +88,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
|
|||||||
'Doctrine\Tests\Models\Routing\RoutingRouteBooking',
|
'Doctrine\Tests\Models\Routing\RoutingRouteBooking',
|
||||||
),
|
),
|
||||||
'navigation' => array(
|
'navigation' => array(
|
||||||
|
'Doctrine\Tests\Models\Navigation\NavUser',
|
||||||
'Doctrine\Tests\Models\Navigation\NavCountry',
|
'Doctrine\Tests\Models\Navigation\NavCountry',
|
||||||
'Doctrine\Tests\Models\Navigation\NavPhotos',
|
'Doctrine\Tests\Models\Navigation\NavPhotos',
|
||||||
'Doctrine\Tests\Models\Navigation\NavTour',
|
'Doctrine\Tests\Models\Navigation\NavTour',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user