madbob/GASdottoNG

View on GitHub
code/app/Models/Concerns/FriendTrait.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Models\Concerns;

use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

use App\User;

trait FriendTrait
{
    public function friends(): HasMany
    {
        return $this->hasMany(User::class, 'parent_id');
    }

    public function friends_with_trashed(): HasMany
    {
        return $this->hasMany(User::class, 'parent_id')->withTrashed();
    }

    public function parent(): BelongsTo
    {
        return $this->belongsTo(User::class, 'parent_id');
    }

    public function scopeTopLevel($query)
    {
        return $query->where('parent_id', null);
    }

    public function isFriend(): bool
    {
        return $this->parent_id != null;
    }
}