1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
namespace Doctrine\Tests\ORM\Functional;
require_once __DIR__ . '/../../TestInit.php';
/**
* Tests basic operations on entities with default values.
*
* @author robo
*/
class DefaultValuesTest extends \Doctrine\Tests\OrmFunctionalTestCase
{
protected function setUp() {
parent::setUp();
try {
$this->_schemaTool->createSchema(array(
$this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\DefaultValueUser'),
$this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\DefaultValueAddress')
));
} catch (\Exception $e) {
// Swallow all exceptions. We do not test the schema tool here.
}
}
public function testSimpleDetachMerge() {
$user = new DefaultValueUser;
$user->name = 'romanb';
$this->_em->persist($user);
$this->_em->flush();
$this->_em->clear();
$userId = $user->id; // e.g. from $_REQUEST
$user2 = $this->_em->getReference(get_class($user), $userId);
$this->_em->flush();
$this->assertFalse($user2->__isInitialized__);
$a = new DefaultValueAddress;
$a->country = 'de';
$a->zip = '12345';
$a->city = 'Berlin';
$a->street = 'Sesamestreet';
$a->user = $user2;
$this->_em->persist($a);
$this->_em->flush();
$this->assertFalse($user2->__isInitialized__);
$this->_em->clear();
$a2 = $this->_em->find(get_class($a), $a->id);
$this->assertTrue($a2->getUser() instanceof DefaultValueUser);
$this->assertEquals($userId, $a2->getUser()->getId());
$this->assertEquals('Poweruser', $a2->getUser()->type);
}
}
/**
* @Entity @Table(name="defaultvalueuser")
*/
class DefaultValueUser
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @Column(type="string")
*/
public $name = '';
/**
* @Column(type="string")
*/
public $type = 'Poweruser';
/**
* @OneToOne(targetEntity="DefaultValueAddress", mappedBy="user", cascade={"persist"})
*/
public $address;
public function getId() {return $this->id;}
}
/**
* CmsAddress
*
* @Entity @Table(name="defaultvalueaddresses")
*/
class DefaultValueAddress
{
/**
* @Column(type="integer")
* @Id @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @Column(type="string", length=50)
*/
public $country;
/**
* @Column(type="string", length=50)
*/
public $zip;
/**
* @Column(type="string", length=50)
*/
public $city;
/**
* Testfield for Schema Updating Tests.
*/
public $street;
/**
* @OneToOne(targetEntity="DefaultValueUser")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
public $user;
public function getUser() {return $this->user;}
}