HasOne::extract()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 9
nc 4
nop 3
dl 0
loc 16
rs 9.6111
c 0
b 0
f 0
1
<?php
2
3
namespace HexMakina\TightORM;
4
5
use HexMakina\BlackBox\ORM\ModelInterface;
6
7
trait HasOne
8
{
9
10
    public static function extract(ModelInterface $extract_model, ModelInterface $from_model, $ignore_nullable = false): ?ModelInterface
11
    {
12
        $extraction_class = get_class($extract_model);
13
        $extraction_table = $extraction_class::table();
14
15
        foreach ($extraction_table->columns() as $column_name => $column) {
16
            $probe_name = $extraction_class::tableAlias() . '_' . $column_name;
17
18
            if (!is_null($probe_res = $from_model->get($probe_name))) {
19
                $extract_model->set($column_name, $probe_res);
20
            } elseif (!$column->isNullable() && $ignore_nullable === false) {
21
                return null;
22
            }
23
        }
24
25
        return $extract_model;
26
    }
27
}
28