ModelProxy::modelClass()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Contains the ModelProxy class.
7
 *
8
 * @copyright   Copyright (c) 2017 Attila Fulop
9
 * @author      Attila Fulop
10
 * @license     MIT
11
 * @since       2017-04-08
12
 *
13
 */
14
15
namespace Konekt\Concord\Proxies;
16
17
/**
18
 * @method static \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null find($id, $columns = ['*'])
19
 * @method static \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection findOrFail($id, $columns = ['*'])
20
 * @method static \Illuminate\Database\Eloquent\Collection findMany($ids, $columns = ['*'])
21
 * @method static \Illuminate\Database\Eloquent\Model findOrNew($id, $columns = ['*'])
22
 * @method static \Illuminate\Database\Eloquent\Model|object|null first($columns = ['*'])
23
 * @method static \Illuminate\Support\Collection get($columns = ['*'])
24
 * @method static int delete($id = null)
25
 * @method static bool insert(array $values)
26
 * @method static int insertGetId(array $values, $sequence = null)
27
 * @method static int update(array $values)
28
 * @method static bool updateOrInsert(array $attributes, array $values = [])
29
 * @method static \Illuminate\Database\Query\Builder where($column, $operator = null, $value = null, $boolean = 'and')
30
 * @method static \Illuminate\Database\Query\Builder whereIn($column, $values, $boolean = 'and', $not = false)
31
 * @method static \Illuminate\Database\Query\Builder whereNotIn($column, $values, $boolean = 'and')
32
 * @method static \Illuminate\Database\Query\Builder whereBetween($column, array $values, $boolean = 'and', $not = false)
33
 * @method static \Illuminate\Database\Query\Builder whereExists(\Closure $callback, $boolean = 'and', $not = false)
34
 * @method static \Illuminate\Database\Query\Builder whereNotExists(\Closure $callback, $boolean = 'and')
35
 * @method static \Illuminate\Database\Query\Builder whereNull($column, $boolean = 'and', $not = false)
36
 * @method static \Illuminate\Database\Query\Builder whereNotNull($column, $boolean = 'and')
37
 * @method static \Illuminate\Database\Query\Builder latest($column = 'created_at')
38
 * @method static \Illuminate\Database\Query\Builder oldest($column = 'created_at')
39
 * @method static \Illuminate\Database\Query\Builder limit($value)
40
 * @method static \Illuminate\Database\Query\Builder take($value)
41
 * @method static \Illuminate\Database\Query\Builder tap($callback)
42
 * @method static \Illuminate\Database\Query\Builder|mixed when($value, $callback, $default = null)
43
 * @method static bool each(callable $callback, $count = 1000)
44
 * @method static mixed value($column)
45
 * @method static mixed min($column)
46
 * @method static mixed max($column)
47
 * @method static mixed sum($column)
48
 * @method static mixed avg($column)
49
 * @method static \Illuminate\Database\Query\Builder orderBy($column, $direction = 'asc')
50
 * @method static \Illuminate\Database\Query\Builder orderByDesc($column)
51
 * @method static \Illuminate\Support\Collection pluck($column, $key = null)
52
 */
53
abstract class ModelProxy extends BaseProxy
54
{
55
    /**
56
     * Returns the real model class FQCN
57
     *
58
     * @return string
59
     */
60
    public static function modelClass()
61
    {
62
        $instance = static::getInstance();
63
64
        return $instance->targetClass();
65
    }
66
67
    /**
68
     * @inheritDoc
69
     */
70
    protected function targetClass(): string
71
    {
72
        return $this->concord->model($this->contract);
73
    }
74
75
    /**
76
     * Try guessing the associated contract class for actual proxy
77
     * Depends on the concord convention the default pattern is
78
     * 'UserProxy' -> entity = 'User' -> '../Contracts/User'
79
     *
80
     * @return string
81
     */
82
    protected function guessContract()
83
    {
84
        return $this->concord->getConvention()->contractForModel(
85
            $this->concord->getConvention()->modelForProxy(static::class)
86
        );
87
    }
88
}
89