Blame view

app/Models/Worker.php 3.5 KB
02a1ed535   Андрей Ларионов   Первый коммит Rek...
1
2
3
  <?php
  
  namespace App\Models;
ad0b69c97   Fedor   task-132687 tasks...
4
  use Illuminate\Database\Eloquent\Builder;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
5
6
7
8
9
10
  use Illuminate\Database\Eloquent\Factories\HasFactory;
  use Illuminate\Database\Eloquent\Model;
  
  class Worker extends Model
  {
      use HasFactory;
8de035475   Андрей Ларионов   Создание: Структу...
11

73209e6cb   Сергей П   Изменения для раз...
12
      protected $table = 'workers';
684588031   Андрей Ларионов   Баг с заголовком ...
13

8de035475   Андрей Ларионов   Создание: Структу...
14
15
16
17
      protected $fillable = [
          'user_id',
          'status_work',
          'position_work',
2b8dd10cb   Сергей П   Правки по задачам
18
          'positions_work',
8de035475   Андрей Ларионов   Создание: Структу...
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
          'telephone',
          'telephone2',
          'persent_anketa',
          'photo',
          'email_data',
          'status_profile',
          'old_year',
          'experience',
          'en_is',
          'education',
          'email',
          'interpassport',
          'mk',
          'vvp',
          'vlm',
          'reka_diplom',
          'more_diplom',
          'mpss',
          'tanker',
          'gmssb',
          'resume',
          'sort',
          'updated_at',
          'text',
          'address',
          'city',
29350503f   Андрей Ларионов   Расширение полей ...
45
46
47
          'coord',
          'file',
          'is_remove',
32cbe7736   Андрей Ларионов   Обновление блейдо...
48
          'favorite_user',
d4632b7a2   Сергей П   Анкета работника
49
50
51
52
53
54
55
56
          'sroch_user',
          'salary_expectations',
          'english_level',
          'ready_boart_date',
          'boart_type_preference',
          'visa_available',
          'tanker_documents_available',
          'confirmation_work_for_vvp',
0e7702a32   Fedor   task-132687 minor...
57
58
          'military_id_available',
          'comment'
8de035475   Андрей Ларионов   Создание: Структу...
59
      ];
2b8dd10cb   Сергей П   Правки по задачам
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
      /**
       * Получить значение поля positions_work как массив.
       *
       * @param  string  $value
       * @return array
       */
      public function getPositionsWorkAttribute($value)
      {
          return json_decode($value, true);
      }
  
      /**
       * Установить значение поля positions_work как JSON.
       *
       * @param  array|string  $value
       * @return void
       */
      public function setPositionsWorkAttribute($value)
      {
          $this->attributes['positions_work'] = is_array($value) ? json_encode($value) : $value;
      }
8de035475   Андрей Ларионов   Создание: Структу...
81
82
83
84
85
86
      /*
       * Связь таблицы users с таблицей workers
      */
      public function users() {
          return $this->belongsTo(User::class, 'user_id');
      }
29350503f   Андрей Ларионов   Расширение полей ...
87

a13ce8670   Андрей Ларионов   Обновление проект...
88
89
90
91
92
93
94
      // Связь Работника с сертификами (0-0 - 1)
      public function sertificate() {
          return $this->hasMany(sertification::class);
      }
  
      // Связь Работника с должностями (0-0 - 1)
      public function job_titles() {
99a41e761   Андрей Ларионов   Личный кабинет по...
95
          return $this->belongsToMany(Job_title::class, 'title_workers');
a13ce8670   Андрей Ларионов   Обновление проект...
96
97
98
99
100
101
      }
  
      //Связь Работника с опытом работы (1 - 0-0)
      public function place_worker() {
          return $this->hasMany(place_works::class);
      }
29350503f   Андрей Ларионов   Расширение полей ...
102
103
104
      public function scopeActive($query) {
          return $query->where('is_remove', '=', '0');
      }
a13ce8670   Андрей Ларионов   Обновление проект...
105
106
107
108
109
110
111
112
  
      //Связь Работника с предыдущими компаниями
      public function prev_company() {
          return $this->hasMany(PrevCompany::class);
      }
  
      //Связь Работника с инфоблоками (0-0 - 0-0)
      public function infobloks() {
0e7702a32   Fedor   task-132687 minor...
113
114
115
116
117
118
          return $this->belongsToMany(
              infobloks::class,
              'dop_info',
              'worker_id',
              'infoblok_id'
          )->withPivot('status');
a13ce8670   Андрей Ларионов   Обновление проект...
119
      }
f3766c7c1   Андрей Ларионов   Коммит по регистр...
120

492296b6f   Андрей Ларионов   Коммит по итогу п...
121
122
      //Связи Работника с дополнительными
      public function dop_info() {
7243b8e24   Андрей Ларионов   Обновление проект...
123
          return $this->hasMany(Dop_info::class, 'worker_id');
492296b6f   Андрей Ларионов   Коммит по итогу п...
124
      }
0ea985223   Андрей Ларионов   Коммит по диалога...
125
126
127
      public function response() {
          return $this->hasMany(ResponseWork::class);
      }
2b8dd10cb   Сергей П   Правки по задачам
128
129
130
131
132
      public function getJobsAttribute()
      {
          $job_titles_ids = json_decode($this->attributes['positions_work'], true);
          return Job_title::whereIn('id', $job_titles_ids)->get();
      }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
133
  }