HasMany   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 32
ccs 12
cts 12
cp 1
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A matchSimple() 0 22 4
1
<?php
2
3
namespace Volosyuk\SimpleEloquent\Relations;
4
5
use Illuminate\Database\Eloquent\Relations\HasMany as BaseHasMany;
6
use Illuminate\Support\Collection;
7
use stdClass;
8
use Volosyuk\SimpleEloquent\ModelAccessor;
9
10
/**
11
 * Class HasManyWithSimple
12
 * @package Volosyuk\SimpleEloquent
13
 */
14
class HasMany extends BaseHasMany
15
{
16
    use Relation;
17
18
    /**
19
     * @param array $models
20
     * @param Collection $results
21
     * @param $relation
22
     * @return array|stdClass[]
23
     */
24 1
    protected function matchSimple(array &$models, Collection $results, $relation)
25
    {
26 1
        $dictionary = [];
27
28 1
        $foreign = $this->getForeignKeyName();
29
30 1
        foreach ($results as $result) {
31 1
            $dictionary[ModelAccessor::get($result, $foreign)][] = $result;
32
        }
33
34 1
        foreach ($models as &$model) {
35 1
            $value = [];
36
37 1
            if (isset($dictionary[$key = ModelAccessor::get($model, $this->localKey)])) {
38 1
                $value = $dictionary[$key];
39
            }
40
41 1
            ModelAccessor::set($model, $relation, Collection::make($value));
42
        }
43 1
        unset($model);
44
45 1
        return $models;
46
    }
47
}
48