InventoryItemRepository   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 51
rs 10
c 2
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A findByUser() 0 4 1
A findOneByUserAndItemId() 0 9 1
A findOneByUserAndSlot() 0 15 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