User.php 3.28 KB
<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'admin',
        'telephone',
        'surname',
        'name_man',
        'surname2',
        'is_worker',
        'is_lookin',
        'is_message',
        'is_public',
        'is_remove',
        'is_ban',
        'is_new',
        'email_verified_at',
        'created_at',
        'updated_at'
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    /*
    * Связь Пользователей системы с работодателями
     * users - employers
    */
    public function employers() {
        return $this->hasMany(Employer::class, 'user_id');
    }

    /*
     * Связь Пользователей системы с работниками
     * users - workers
    */
    public function workers() {
        return $this->hasMany(Worker::class, 'user_id');
    }

    /*
        * Связь Пользователей системы с работниками
        * users - workers
    */
    public function work() {
        return $this->hasMany(Worker::class, 'user_id')->select('telephone', 'email', 'position_work', 'persent_anketa');
    }

    /*
      * Связь Модели Пользователей(Users) с Группами (Group_users)
      * users - group_users
        многие-ко-многим
   */
    public function ingroup() {
        return $this->belongsToMany(Group_user::class, 'group_works');
    }

    /*
     * Связь Пользователей системы с ссобщениями
     * users - messages
    */
    public function messages() {
        return $this->hasMany(Message::class);
    }

    /*
     * Связь Пользователей системы с статистика
     * users - static_workers
    */
    public function static_user() {
        return $this->hasMany(Static_worker::class);
    }

    /*
    * Связь модели Юзеры (users) с моделью Группы пользователей (Group_works)
        один-ко-многим
    */
    public function peoples() {
        return $this->hasMany(Group_works::class);
    }

    /*
    * Связь Модели Пользователей(Users) с Группами (Group_users)
    * users - group_users
        многие-ко-многим
    */
    public function jobtitles() {
        return $this->belongsToMany(Job_title::class, 'Workers', 'user_id', 'position_work');
    }

    public function scopeActive($query) {
        return $query->where('is_remove', '=', '0');
    }

}