Failed Conditions
Pull Request — 2.6 (#7886)
by
unknown
13:51
created

CmsUser::getAddress()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 0
c 1
b 0
f 0
dl 0
loc 1
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Doctrine\Tests\Models\CMSCustomId;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
7
/**
8
 * @Entity
9
 * @Table(name="cms_users_customid")
10
 * @NamedQueries({
11
 *     @NamedQuery(name="all", query="SELECT u FROM __CLASS__ u")
12
 * })
13
 *
14
 * @NamedNativeQueries({
15
 *      @NamedNativeQuery(
16
 *          name           = "fetchIdAndUsernameWithResultClass",
17
 *          resultClass    = "CmsUser",
18
 *          query          = "SELECT id, username FROM cms_users WHERE username = ?"
19
 *      ),
20
 *      @NamedNativeQuery(
21
 *          name           = "fetchAllColumns",
22
 *          resultClass    = "CmsUser",
23
 *          query          = "SELECT * FROM cms_users WHERE username = ?"
24
 *      ),
25
 *      @NamedNativeQuery(
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 = ?"
29
 *      ),
30
 *      @NamedNativeQuery(
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 = ?"
34
 *      ),
35
 *      @NamedNativeQuery(
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"
39
 *      ),
40
 *      @NamedNativeQuery(
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"
44
 *      ),
45
 * })
46
 *
47
 * @SqlResultSetMappings({
48
 *      @SqlResultSetMapping(
49
 *          name    = "mappingJoinedAddress",
50
 *          entities= {
51
 *              @EntityResult(
52
 *                  entityClass = "__CLASS__",
53
 *                  fields      = {
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"),
61
 *                  }
62
 *              )
63
 *          }
64
 *      ),
65
 *      @SqlResultSetMapping(
66
 *          name    = "mappingJoinedPhonenumber",
67
 *          entities= {
68
 *              @EntityResult(
69
 *                  entityClass = "CmsUser",
70
 *                  fields      = {
71
 *                      @FieldResult("id"),
72
 *                      @FieldResult("name"),
73
 *                      @FieldResult("status"),
74
 *                      @FieldResult("phonenumbers.phonenumber" , column = "number"),
75
 *                  }
76
 *              )
77
 *          }
78
 *      ),
79
 *      @SqlResultSetMapping(
80
 *          name    = "mappingUserPhonenumberCount",
81
 *          entities= {
82
 *              @EntityResult(
83
 *                  entityClass = "CmsUser",
84
 *                  fields      = {
85
 *                      @FieldResult(name = "id"),
86
 *                      @FieldResult(name = "name"),
87
 *                      @FieldResult(name = "status"),
88
 *                  }
89
 *              )
90
 *          },
91
 *          columns = {
92
 *              @ColumnResult("numphones")
93
 *          }
94
 *      ),
95
 *      @SqlResultSetMapping(
96
 *          name    = "mappingMultipleJoinsEntityResults",
97
 *          entities= {
98
 *              @EntityResult(
99
 *                  entityClass = "__CLASS__",
100
 *                  fields      = {
101
 *                      @FieldResult(name = "id",       column="u_id"),
102
 *                      @FieldResult(name = "name",     column="u_name"),
103
 *                      @FieldResult(name = "status",   column="u_status"),
104
 *                  }
105
 *              ),
106
 *              @EntityResult(
107
 *                  entityClass = "CmsAddress",
108
 *                  fields      = {
109
 *                      @FieldResult(name = "id",       column="a_id"),
110
 *                      @FieldResult(name = "zip",      column="a_zip"),
111
 *                      @FieldResult(name = "country",  column="a_country"),
112
 *                  }
113
 *              )
114
 *          },
115
 *          columns = {
116
 *              @ColumnResult("numphones")
117
 *          }
118
 *      )
119
 * })
120
 */
121
class CmsUser
122
{
123
    /**
124
     * @Id
125
     * @Column(type="CustomIdObject")
126
     * @GeneratedValue(strategy="NONE")
127
     */
128
    public $id;
129
    /**
130
     * @Column(type="string", length=50, nullable=true)
131
     */
132
    public $status;
133
    /**
134
     * @Column(type="string", length=255, unique=true)
135
     */
136
    public $username;
137
    /**
138
     * @Column(type="string", length=255)
139
     */
140
    public $name;
141
    /**
142
     * @OneToMany(targetEntity="CmsPhonenumber", mappedBy="user", cascade={"persist", "merge"}, orphanRemoval=true)
143
     */
144
    public $phonenumbers;
145
    /**
146
     * @OneToMany(targetEntity="CmsArticle", mappedBy="user", cascade={"detach"})
147
     */
148
    public $articles;
149
    /**
150
     * @OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
151
     */
152
    public $address;
153
    /**
154
     * @OneToOne(targetEntity="CmsEmail", inversedBy="user", cascade={"persist"}, orphanRemoval=true)
155
     * @JoinColumn(referencedColumnName="id", nullable=true)
156
     */
157
    public $email;
158
    /**
159
     * @ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge", "detach"})
160
     * @JoinTable(name="cms_users_groups_customid",
161
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
162
     *      inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}
163
     *      )
164
     */
165
    public $groups;
166
    /**
167
     * @ManyToMany(targetEntity="CmsTag", inversedBy="users", cascade={"all"})
168
     * @JoinTable(name="cms_users_tags_customid",
169
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
170
     *      inverseJoinColumns={@JoinColumn(name="tag_id", referencedColumnName="id")}
171
     *      )
172
     */
173
    public $tags;
174
175
    public $nonPersistedProperty;
176
177
    public $nonPersistedPropertyObject;
178
179
    public function __construct() {
180
        $this->phonenumbers = new ArrayCollection;
181
        $this->articles = new ArrayCollection;
182
        $this->groups = new ArrayCollection;
183
        $this->tags = new ArrayCollection;
184
    }
185
186
    public function getId() {
187
        return $this->id;
188
    }
189
190
    public function getStatus() {
191
        return $this->status;
192
    }
193
194
    public function getUsername() {
195
        return $this->username;
196
    }
197
198
    public function getName() {
199
        return $this->name;
200
    }
201
202
    /**
203
     * Adds a phonenumber to the user.
204
     *
205
     * @param CmsPhonenumber $phone
206
     */
207
    public function addPhonenumber(CmsPhonenumber $phone) {
208
        $this->phonenumbers[] = $phone;
209
        $phone->setUser($this);
210
    }
211
212
    public function getPhonenumbers() {
213
        return $this->phonenumbers;
214
    }
215
216
    public function addArticle(CmsArticle $article) {
217
        $this->articles[] = $article;
218
        $article->setAuthor($this);
219
    }
220
221
    public function addGroup(CmsGroup $group) {
222
        $this->groups[] = $group;
223
        $group->addUser($this);
224
    }
225
226
    public function getGroups() {
227
        return $this->groups;
228
    }
229
230
    public function addTag(CmsTag $tag) {
231
        $this->tags[] = $tag;
232
        $tag->addUser($this);
233
    }
234
235
    public function getTags() {
236
        return $this->tags;
237
    }
238
239
    public function removePhonenumber($index) {
240
        if (isset($this->phonenumbers[$index])) {
241
            $ph = $this->phonenumbers[$index];
242
            unset($this->phonenumbers[$index]);
243
            $ph->user = null;
244
            return true;
245
        }
246
        return false;
247
    }
248
249
    public function getAddress() { return $this->address; }
250
251
    public function setAddress(CmsAddress $address) {
252
        if ($this->address !== $address) {
253
            $this->address = $address;
254
            $address->setUser($this);
255
        }
256
    }
257
258
    /**
259
     * @return CmsEmail
260
     */
261
    public function getEmail() { return $this->email; }
262
263
    public function setEmail(CmsEmail $email = null) {
264
        if ($this->email !== $email) {
265
            $this->email = $email;
266
267
            if ($email) {
268
                $email->setUser($this);
269
            }
270
        }
271
    }
272
273
    public static function loadMetadata(\Doctrine\ORM\Mapping\ClassMetadataInfo $metadata)
274
    {
275
        $metadata->setPrimaryTable(
276
            [
277
           'name' => 'cms_users_customid',
278
            ]
279
        );
280
281
        $metadata->addNamedNativeQuery(
282
            [
283
            'name'              => 'fetchIdAndUsernameWithResultClass',
284
            'query'             => 'SELECT id, username FROM cms_users_customid WHERE username = ?',
285
            'resultClass'       => CmsUser::class,
286
            ]
287
        );
288
289
        $metadata->addNamedNativeQuery(
290
            [
291
            'name'              => 'fetchAllColumns',
292
            'query'             => 'SELECT * FROM cms_users_customid WHERE username = ?',
293
            'resultClass'       => CmsUser::class,
294
            ]
295
        );
296
297
        $metadata->addNamedNativeQuery(
298
            [
299
            'name'              => 'fetchJoinedAddress',
300
            'query'             => 'SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users_customid u INNER JOIN cms_addresses_customid a ON u.id = a.user_id WHERE u.username = ?',
301
            'resultSetMapping'  => 'mappingJoinedAddress',
302
            ]
303
        );
304
305
        $metadata->addNamedNativeQuery(
306
            [
307
            'name'              => 'fetchJoinedPhonenumber',
308
            'query'             => 'SELECT id, name, status, phonenumber AS number FROM cms_users_customid INNER JOIN cms_phonenumbers_customid ON id = user_id WHERE username = ?',
309
            'resultSetMapping'  => 'mappingJoinedPhonenumber',
310
            ]
311
        );
312
313
        $metadata->addNamedNativeQuery(
314
            [
315
            'name'              => 'fetchUserPhonenumberCount',
316
            'query'             => 'SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users_customid INNER JOIN cms_phonenumbers_customid ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username',
317
            'resultSetMapping'  => 'mappingUserPhonenumberCount',
318
            ]
319
        );
320
321
        $metadata->addNamedNativeQuery(
322
            [
323
            "name"              => "fetchMultipleJoinsEntityResults",
324
            "resultSetMapping"  => "mappingMultipleJoinsEntityResults",
325
            "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_customid u INNER JOIN cms_addresses_customid a ON u.id = a.user_id INNER JOIN cms_phonenumbers_customid 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"
326
            ]
327
        );
328
329
        $metadata->addSqlResultSetMapping(
330
            [
331
            'name'      => 'mappingJoinedAddress',
332
            'columns'   => [],
333
            'entities'  => [
334
                [
335
                'fields'=> [
336
                  [
337
                    'name'      => 'id',
338
                    'column'    => 'id',
339
                  ],
340
                  [
341
                    'name'      => 'name',
342
                    'column'    => 'name',
343
                  ],
344
                  [
345
                    'name'      => 'status',
346
                    'column'    => 'status',
347
                  ],
348
                  [
349
                    'name'      => 'address.zip',
350
                    'column'    => 'zip',
351
                  ],
352
                  [
353
                    'name'      => 'address.city',
354
                    'column'    => 'city',
355
                  ],
356
                  [
357
                    'name'      => 'address.country',
358
                    'column'    => 'country',
359
                  ],
360
                  [
361
                    'name'      => 'address.id',
362
                    'column'    => 'a_id',
363
                  ],
364
                ],
365
                'entityClass'           => CmsUser::class,
366
                'discriminatorColumn'   => null
367
                ],
368
            ],
369
            ]
370
        );
371
372
        $metadata->addSqlResultSetMapping(
373
            [
374
            'name'      => 'mappingJoinedPhonenumber',
375
            'columns'   => [],
376
            'entities'  => [
377
                [
378
                'fields'=> [
379
                  [
380
                    'name'      => 'id',
381
                    'column'    => 'id',
382
                  ],
383
                  [
384
                    'name'      => 'name',
385
                    'column'    => 'name',
386
                  ],
387
                  [
388
                    'name'      => 'status',
389
                    'column'    => 'status',
390
                  ],
391
                  [
392
                    'name'      => 'phonenumbers.phonenumber',
393
                    'column'    => 'number',
394
                  ],
395
                ],
396
                'entityClass'   => CmsUser::class,
397
                'discriminatorColumn'   => null
398
                ],
399
            ],
400
            ]
401
        );
402
403
        $metadata->addSqlResultSetMapping(
404
            [
405
            'name'      => 'mappingUserPhonenumberCount',
406
            'columns'   => [],
407
            'entities'  => [
408
              [
409
                'fields' => [
410
                  [
411
                    'name'      => 'id',
412
                    'column'    => 'id',
413
                  ],
414
                  [
415
                    'name'      => 'name',
416
                    'column'    => 'name',
417
                  ],
418
                  [
419
                    'name'      => 'status',
420
                    'column'    => 'status',
421
                  ]
422
                ],
423
                'entityClass'   => CmsUser::class,
424
                'discriminatorColumn'   => null
425
              ]
426
            ],
427
            'columns' => [
428
                  [
429
                    'name' => 'numphones',
430
                  ]
431
            ]
432
            ]
433
        );
434
435
        $metadata->addSqlResultSetMapping(
436
            [
437
            'name'      => 'mappingMultipleJoinsEntityResults',
438
            'entities'  => [
439
                [
440
                    'fields' => [
441
                        [
442
                            'name'      => 'id',
443
                            'column'    => 'u_id',
444
                        ],
445
                        [
446
                            'name'      => 'name',
447
                            'column'    => 'u_name',
448
                        ],
449
                        [
450
                            'name'      => 'status',
451
                            'column'    => 'u_status',
452
                        ]
453
                    ],
454
                    'entityClass'           => CmsUser::class,
455
                    'discriminatorColumn'   => null,
456
                ],
457
                [
458
                    'fields' => [
459
                        [
460
                            'name'      => 'id',
461
                            'column'    => 'a_id',
462
                        ],
463
                        [
464
                            'name'      => 'zip',
465
                            'column'    => 'a_zip',
466
                        ],
467
                        [
468
                            'name'      => 'country',
469
                            'column'    => 'a_country',
470
                        ],
471
                    ],
472
                    'entityClass'           => CmsAddress::class,
473
                    'discriminatorColumn'   => null,
474
                ],
475
            ],
476
            'columns' => [
477
                [
478
                    'name' => 'numphones',
479
                ]
480
            ]
481
            ]
482
        );
483
484
    }
485
}
486