3 namespace Doctrine\Tests\Models\CMS;
5 use Doctrine\Common\Collections\ArrayCollection;
9 * @Table(name="cms_users")
11 * @NamedQuery(name="all", query="SELECT u FROM __CLASS__ u")
14 * @NamedNativeQueries({
16 * name = "fetchIdAndUsernameWithResultClass",
17 * resultClass = "CmsUser",
18 * query = "SELECT id, username FROM cms_users WHERE username = ?"
21 * name = "fetchAllColumns",
22 * resultClass = "CmsUser",
23 * query = "SELECT * FROM cms_users WHERE username = ?"
26 * name = "fetchJoinedAddress",
27 * resultSetMapping= "mappingJoinedAddress",
28 * query = "SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?"
31 * name = "fetchJoinedPhonenumber",
32 * resultSetMapping= "mappingJoinedPhonenumber",
33 * query = "SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?"
36 * name = "fetchUserPhonenumberCount",
37 * resultSetMapping= "mappingUserPhonenumberCount",
38 * query = "SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username"
41 * name = "fetchMultipleJoinsEntityResults",
42 * resultSetMapping= "mappingMultipleJoinsEntityResults",
43 * query = "SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username"
47 * @SqlResultSetMappings({
48 * @SqlResultSetMapping(
49 * name = "mappingJoinedAddress",
52 * entityClass = "__CLASS__",
54 * @FieldResult(name = "id"),
55 * @FieldResult(name = "name"),
56 * @FieldResult(name = "status"),
57 * @FieldResult(name = "address.zip"),
58 * @FieldResult(name = "address.city"),
59 * @FieldResult(name = "address.country"),
60 * @FieldResult(name = "address.id", column = "a_id"),
65 * @SqlResultSetMapping(
66 * name = "mappingJoinedPhonenumber",
69 * entityClass = "CmsUser",
72 * @FieldResult("name"),
73 * @FieldResult("status"),
74 * @FieldResult("phonenumbers.phonenumber" , column = "number"),
79 * @SqlResultSetMapping(
80 * name = "mappingUserPhonenumberCount",
83 * entityClass = "CmsUser",
85 * @FieldResult(name = "id"),
86 * @FieldResult(name = "name"),
87 * @FieldResult(name = "status"),
92 * @ColumnResult("numphones")
95 * @SqlResultSetMapping(
96 * name = "mappingMultipleJoinsEntityResults",
99 * entityClass = "__CLASS__",
101 * @FieldResult(name = "id", column="u_id"),
102 * @FieldResult(name = "name", column="u_name"),
103 * @FieldResult(name = "status", column="u_status"),
107 * entityClass = "CmsAddress",
109 * @FieldResult(name = "id", column="a_id"),
110 * @FieldResult(name = "zip", column="a_zip"),
111 * @FieldResult(name = "country", column="a_country"),
116 * @ColumnResult("numphones")
124 * @Id @Column(type="integer")
129 * @Column(type="string", length=50, nullable=true)
133 * @Column(type="string", length=255, unique=true)
137 * @Column(type="string", length=255)
141 * @OneToMany(targetEntity="CmsPhonenumber", mappedBy="user", cascade={"persist", "merge"}, orphanRemoval=true)
143 public $phonenumbers;
145 * @OneToMany(targetEntity="CmsArticle", mappedBy="user", cascade={"detach"})
149 * @OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
153 * @OneToOne(targetEntity="CmsEmail", inversedBy="user", cascade={"persist"}, orphanRemoval=true)
154 * @JoinColumn(referencedColumnName="id", nullable=true)
158 * @ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge", "detach"})
159 * @JoinTable(name="cms_users_groups",
160 * joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
161 * inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}
166 public $nonPersistedProperty;
168 public $nonPersistedPropertyObject;
170 public function __construct() {
171 $this->phonenumbers = new ArrayCollection;
172 $this->articles = new ArrayCollection;
173 $this->groups = new ArrayCollection;
176 public function getId() {
180 public function getStatus() {
181 return $this->status;
184 public function getUsername() {
185 return $this->username;
188 public function getName() {
193 * Adds a phonenumber to the user.
195 * @param CmsPhonenumber $phone
197 public function addPhonenumber(CmsPhonenumber $phone) {
198 $this->phonenumbers[] = $phone;
199 $phone->setUser($this);
202 public function getPhonenumbers() {
203 return $this->phonenumbers;
206 public function addArticle(CmsArticle $article) {
207 $this->articles[] = $article;
208 $article->setAuthor($this);
211 public function addGroup(CmsGroup $group) {
212 $this->groups[] = $group;
213 $group->addUser($this);
216 public function getGroups() {
217 return $this->groups;
220 public function removePhonenumber($index) {
221 if (isset($this->phonenumbers[$index])) {
222 $ph = $this->phonenumbers[$index];
223 unset($this->phonenumbers[$index]);
230 public function getAddress() { return $this->address; }
232 public function setAddress(CmsAddress $address) {
233 if ($this->address !== $address) {
234 $this->address = $address;
235 $address->setUser($this);
239 public function getEmail() { return $this->email; }
241 public function setEmail(CmsEmail $email = null) {
242 if ($this->email !== $email) {
243 $this->email = $email;
246 $email->setUser($this);
251 public static function loadMetadata(\Doctrine\ORM\Mapping\ClassMetadataInfo $metadata)
253 $metadata->setPrimaryTable(array(
254 'name' => 'cms_users',
257 $metadata->addNamedNativeQuery(array (
258 'name' => 'fetchIdAndUsernameWithResultClass',
259 'query' => 'SELECT id, username FROM cms_users WHERE username = ?',
260 'resultClass' => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
263 $metadata->addNamedNativeQuery(array (
264 'name' => 'fetchAllColumns',
265 'query' => 'SELECT * FROM cms_users WHERE username = ?',
266 'resultClass' => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
269 $metadata->addNamedNativeQuery(array (
270 'name' => 'fetchJoinedAddress',
271 'query' => 'SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?',
272 'resultSetMapping' => 'mappingJoinedAddress',
275 $metadata->addNamedNativeQuery(array (
276 'name' => 'fetchJoinedPhonenumber',
277 'query' => 'SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?',
278 'resultSetMapping' => 'mappingJoinedPhonenumber',
281 $metadata->addNamedNativeQuery(array (
282 'name' => 'fetchUserPhonenumberCount',
283 'query' => 'SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username',
284 'resultSetMapping' => 'mappingUserPhonenumberCount',
287 $metadata->addNamedNativeQuery(array (
288 "name" => "fetchMultipleJoinsEntityResults",
289 "resultSetMapping" => "mappingMultipleJoinsEntityResults",
290 "query" => "SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username"
293 $metadata->addSqlResultSetMapping(array (
294 'name' => 'mappingJoinedAddress',
295 'columns' => array(),
296 'entities' => array(array (
308 'column' => 'status',
311 'name' => 'address.zip',
315 'name' => 'address.city',
319 'name' => 'address.country',
320 'column' => 'country',
323 'name' => 'address.id',
327 'entityClass' => 'Doctrine\Tests\Models\CMS\CmsUser',
328 'discriminatorColumn' => null
333 $metadata->addSqlResultSetMapping(array (
334 'name' => 'mappingJoinedPhonenumber',
335 'columns' => array(),
336 'entities' => array(array(
348 'column' => 'status',
351 'name' => 'phonenumbers.phonenumber',
352 'column' => 'number',
355 'entityClass' => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
356 'discriminatorColumn' => null
361 $metadata->addSqlResultSetMapping(array (
362 'name' => 'mappingUserPhonenumberCount',
363 'columns' => array(),
364 'entities' => array (
377 'column' => 'status',
380 'entityClass' => 'Doctrine\Tests\Models\CMS\CmsUser',
381 'discriminatorColumn' => null
386 'name' => 'numphones',
391 $metadata->addSqlResultSetMapping(array(
392 'name' => 'mappingMultipleJoinsEntityResults',
393 'entities' => array(array(
401 'column' => 'u_name',
405 'column' => 'u_status',
408 'entityClass' => 'Doctrine\Tests\Models\CMS\CmsUser',
409 'discriminatorColumn' => null,
423 'column' => 'a_country',
426 'entityClass' => 'Doctrine\Tests\Models\CMS\CmsAddress',
427 'discriminatorColumn' => null,
430 'columns' => array(array(
431 'name' => 'numphones',