1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Doctrine\Tests\ORM\Functional\Ticket; |
4
|
|
|
|
5
|
|
|
class DDC719Test extends \Doctrine\Tests\OrmFunctionalTestCase |
6
|
|
|
{ |
7
|
|
|
protected function setUp() |
8
|
|
|
{ |
9
|
|
|
parent::setUp(); |
10
|
|
|
//$this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger); |
|
|
|
|
11
|
|
|
$this->_schemaTool->createSchema( |
12
|
|
|
[ |
13
|
|
|
$this->_em->getClassMetadata(DDC719Group::class), |
14
|
|
|
] |
15
|
|
|
); |
16
|
|
|
} |
17
|
|
|
|
18
|
|
|
public function testIsEmptySqlGeneration() |
19
|
|
|
{ |
20
|
|
|
$q = $this->_em->createQuery('SELECT g, c FROM Doctrine\Tests\ORM\Functional\Ticket\DDC719Group g LEFT JOIN g.children c WHERE g.parents IS EMPTY'); |
21
|
|
|
|
22
|
|
|
$referenceSQL = 'SELECT g0_.name AS name_0, g0_.description AS description_1, g0_.id AS id_2, g1_.name AS name_3, g1_.description AS description_4, g1_.id AS id_5 FROM groups g0_ LEFT JOIN groups_groups g2_ ON g0_.id = g2_.parent_id LEFT JOIN groups g1_ ON g1_.id = g2_.child_id WHERE (SELECT COUNT(*) FROM groups_groups g3_ WHERE g3_.child_id = g0_.id) = 0'; |
23
|
|
|
|
24
|
|
|
$this->assertEquals( |
25
|
|
|
strtolower($referenceSQL), |
26
|
|
|
strtolower($q->getSQL()) |
|
|
|
|
27
|
|
|
); |
28
|
|
|
} |
29
|
|
|
} |
30
|
|
|
|
31
|
|
|
/** |
32
|
|
|
* @MappedSuperclass |
33
|
|
|
*/ |
34
|
|
|
class Entity |
35
|
|
|
{ |
36
|
|
|
/** |
37
|
|
|
* @Id @GeneratedValue |
38
|
|
|
* @Column(type="integer") |
39
|
|
|
*/ |
40
|
|
|
protected $id; |
41
|
|
|
|
42
|
|
|
public function getId() { return $this->id; } |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* @Entity |
47
|
|
|
* @Table(name="groups") |
48
|
|
|
*/ |
49
|
|
|
class DDC719Group extends Entity { |
50
|
|
|
/** @Column(type="string", nullable=false) */ |
51
|
|
|
protected $name; |
52
|
|
|
|
53
|
|
|
/** @Column(type="string", nullable=true) */ |
54
|
|
|
protected $description; |
55
|
|
|
|
56
|
|
|
/** |
57
|
|
|
* @ManyToMany(targetEntity="DDC719Group", inversedBy="parents") |
58
|
|
|
* @JoinTable(name="groups_groups", |
59
|
|
|
* joinColumns={@JoinColumn(name="parent_id", referencedColumnName="id")}, |
60
|
|
|
* inverseJoinColumns={@JoinColumn(name="child_id", referencedColumnName="id")} |
61
|
|
|
* ) |
62
|
|
|
*/ |
63
|
|
|
protected $children = NULL; |
64
|
|
|
|
65
|
|
|
/** |
66
|
|
|
* @ManyToMany(targetEntity="DDC719Group", mappedBy="children") |
67
|
|
|
*/ |
68
|
|
|
protected $parents = NULL; |
69
|
|
|
|
70
|
|
|
/** |
71
|
|
|
* construct |
72
|
|
|
*/ |
73
|
|
|
public function __construct() { |
74
|
|
|
parent::__construct(); |
|
|
|
|
75
|
|
|
|
76
|
|
|
$this->channels = new ArrayCollection(); |
|
|
|
|
77
|
|
|
$this->children = new ArrayCollection(); |
78
|
|
|
$this->parents = new ArrayCollection(); |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
/** |
82
|
|
|
* adds group as new child |
83
|
|
|
* |
84
|
|
|
* @param Group $child |
85
|
|
|
*/ |
86
|
|
|
public function addGroup(Group $child) { |
|
|
|
|
87
|
|
|
if ( ! $this->children->contains($child)) { |
88
|
|
|
$this->children->add($child); |
89
|
|
|
$child->addGroup($this); |
90
|
|
|
} |
91
|
|
|
} |
92
|
|
|
|
93
|
|
|
/** |
94
|
|
|
* adds channel as new child |
95
|
|
|
* |
96
|
|
|
* @param Channel $child |
97
|
|
|
*/ |
98
|
|
|
public function addChannel(Channel $child) { |
|
|
|
|
99
|
|
|
if ( ! $this->channels->contains($child)) { |
100
|
|
|
$this->channels->add($child); |
101
|
|
|
} |
102
|
|
|
} |
103
|
|
|
|
104
|
|
|
/** |
105
|
|
|
* getter & setter |
106
|
|
|
*/ |
107
|
|
|
public function getName() { return $this->name; } |
108
|
|
|
public function setName($name) { $this->name = $name; } |
109
|
|
|
public function getDescription() { return $this->description; } |
110
|
|
|
public function setDescription($description) { $this->description = $description; } |
111
|
|
|
public function getChildren() { return $this->children; } |
112
|
|
|
public function getParents() { return $this->parents; } |
113
|
|
|
public function getChannels() { return $this->channels; } |
114
|
|
|
} |
115
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.