Completed
Push — master ( 74c577...c1ce98 )
by Kirill
06:10
created

MessageMapper::user()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
declare(strict_types = 1);
3
/**
4
 * This file is part of GitterBot package.
5
 *
6
 * @author Serafim <[email protected]>
7
 * @date 28.03.2016 14:06
8
 *
9
 * For the full copyright and license information, please view the LICENSE
10
 * file that was distributed with this source code.
11
 */
12
namespace Core\Mappers\Message;
13
14
use Domains\Message\Message;
15
use Domains\Message\Relation;
16
use Domains\Message\Url;
17
use Domains\User\User;
18
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
19
use Illuminate\Database\Eloquent\Model;
20
use Illuminate\Database\Query\Builder;
21
use Illuminate\Support\Collection;
22
23
/**
24
 * Class Message
25
 * @package Domains\Message
26
 *
27
 * @property-read User $user
28
 * @property-read Url[]|Collection $urls
29
 * @property-read Message[]|Collection $answers
30
 * @property-read Message[]|Collection $questions
31
 * @property-read User[]|Collection $mentions
32
 *
33
 * @method static Message|Builder|EloquentBuilder inHistoricalOrder()
34
 */
35
class MessageMapper extends Model
36
{
37
    /**
38
     * @var string
39
     */
40
    protected $table = 'messages';
41
42
    /**
43
     * @param EloquentBuilder $builder
44
     * @return $this
45
     */
46
    public static function scopeInHistoricalOrder(EloquentBuilder $builder)
47
    {
48
        return $builder->orderBy('created_at', 'asc');
49
    }
50
51
    /**
52
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
53
     */
54
    public function user()
55
    {
56
        return $this->hasOne(User::class, 'id', 'user_id');
57
    }
58
59
    /**
60
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
61
     */
62
    public function mentions()
63
    {
64
        return $this->belongsToMany(User::class, 'mentions', 'message_id', 'user_id');
65
    }
66
67
    /**
68
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
69
     */
70
    public function answers()
71
    {
72
        return $this->belongsToMany(Message::class, 'message_relations', 'message_id', 'answer_id', Relation::class);
73
    }
74
75
    /**
76
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
77
     */
78
    public function questions()
79
    {
80
        return $this->belongsToMany(Message::class, 'message_relations', 'answer_id', 'message_id', Relation::class);
81
    }
82
83
    /**
84
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
85
     */
86
    public function urls()
87
    {
88
        return $this->hasMany(Url::class, 'message_id', 'id');
89
    }
90
}
91