InventoryItemRepository::findByUser()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Rottenwood\KingdomBundle\Entity\Infrastructure;
4
5
use Rottenwood\KingdomBundle\Entity\InventoryItem;
6
7
/** {@inheritDoc} */
8
class InventoryItemRepository extends AbstractRepository
9
{
10
11
    /**
12
     * Все предметы в инвентаре игрока
13
     * @param User $user
14
     * @return InventoryItem[]
15
     */
16
    public function findByUser(User $user)
17
    {
18
        return $this->findBy(['user' => $user]);
19
    }
20
21
    /**
22
     * Предмет с itemId в инвентаре игрока
23
     * @param User   $user
24
     * @param string $itemId
25
     * @return InventoryItem|null
26
     */
27
    public function findOneByUserAndItemId(User $user, $itemId)
28
    {
29
        return $this->findOneBy(
30
            [
31
                'user' => $user,
32
                'item' => $itemId,
33
            ]
34
        );
35
    }
36
37
    /**
38
     * Поиск предмета по игроку и слоту
39
     * @param User   $user
40
     * @param string $slotName
41
     * @return InventoryItem|null
42
     */
43
    public function findOneByUserAndSlot($user, $slotName)
44
    {
45
        $builder = $this->createQueryBuilder('inventory_item');
46
        $builder->select('inventory_item');
47
        $builder->where('inventory_item.user = :user');
48
        $builder->andWhere('inventory_item.slot = :slotName');
49
        $builder->setParameters(
50
            [
51
                'user'     => $user,
52
                'slotName' => $slotName,
53
            ]
54
        );
55
56
        return $builder->getQuery()->getOneOrNullResult();
57
    }
58
}
59