Passed
Pull Request — 2.6 (#7737)
by Luís
06:23
created

GH7737Person::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\ORM\Functional\Ticket;
6
7
use Doctrine\Common\Collections\ArrayCollection;
8
use Doctrine\Common\Collections\Criteria;
9
use Doctrine\Tests\OrmFunctionalTestCase;
10
11
/**
12
 * @group GH7737
13
 */
14
class GH7737Test extends OrmFunctionalTestCase
15
{
16
    protected function setUp() : void
17
    {
18
        parent::setUp();
19
20
        $this->setUpEntitySchema([GH7737Group::class, GH7737Person::class]);
21
22
        $group1 = new GH7737Group(1, 'Test 1');
23
        $person = new GH7737Person(1);
24
        $person->groups->add($group1);
25
26
        $this->_em->persist($person);
27
        $this->_em->persist($group1);
28
        $this->_em->persist(new GH7737Group(2, 'Test 2'));
29
        $this->_em->flush();
30
        $this->_em->clear();
31
    }
32
33
    /**
34
     * @test
35
     */
36
    public function memberOfCriteriaShouldBeCompatibleWithQueryBuilder() : void
37
    {
38
        $query = $this->_em->createQueryBuilder()
39
            ->select('person')
40
            ->from(GH7737Person::class, 'person')
41
            ->addCriteria(Criteria::create()->where(Criteria::expr()->memberOf(':group', 'person.groups')))
42
            ->getQuery();
43
44
        $group1   = $this->_em->find(GH7737Group::class, 1);
45
        $matching = $query->setParameter('group', $group1)->getOneOrNullResult();
46
47
        self::assertInstanceOf(GH7737Person::class, $matching);
48
        self::assertSame(1, $matching->id);
49
50
        $group2      = $this->_em->find(GH7737Group::class, 2);
51
        $notMatching = $query->setParameter('group', $group2)->getOneOrNullResult();
52
53
        self::assertNull($notMatching);
54
    }
55
}
56
57
/**
58
 * @Entity
59
 */
60
class GH7737Group
61
{
62
    /**
63
     * @Id
64
     * @Column(type="integer")
65
     */
66
    public $id;
67
68
    /** @Column */
69
    public $name;
70
71
    public function __construct(int $id, string $name)
72
    {
73
        $this->id   = $id;
74
        $this->name = $name;
75
    }
76
}
77
78
/**
79
 * @Entity
80
 */
81
class GH7737Person
82
{
83
    /**
84
     * @Id
85
     * @Column(type="integer")
86
     */
87
    public $id;
88
89
    /**
90
     * @ManyToMany(targetEntity=GH7737Group::class)
91
     * @JoinTable(inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id", unique=true)})
92
     */
93
    public $groups;
94
95
    public function __construct(int $id)
96
    {
97
        $this->id     = $id;
98
        $this->groups = new ArrayCollection();
99
    }
100
}
101