123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- namespace App\Models;
- use App\Search\Traits\JobSearchable;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\SoftDeletes;
- class Jobs extends Model
- {
- use SoftDeletes,JobSearchable;
- protected $guarded = [];
- static function getTableName()
- {
- $job = new Jobs();
- return $job->getTable();
- }
- public function company()
- {
- return $this->belongsTo(Company::class, 'company_id');
- }
- public function subsites()
- {
- return $this->hasMany(SubsiteJob::class, 'jobs_id');
- }
- public function promotion()
- {
- return $this->hasMany(Promotion::class, 'jobid');
- }
- public function jobsContact()
- {
- return $this->hasOne(JobsContact::class, 'job_id');
- }
- public function contact()
- {
- return $this->hasOne(JobsContact::class, 'job_id');
- }
- public static function jobsUpdate($ids, $data)
- {
- return Jobs::whereIn('id', $ids)->update($data);
- }
- public function getTagAttribute($value)
- {
- return explode(',', $value);
- }
- public function setTagAttribute($value)
- {
- if ($value) {
- $this->attributes['tag'] = implode(',', $value);
- } else {
- return '';
- }
- }
- public function getAgeAttribute($value)
- {
- return explode('-', $value);
- }
- public function setAgeAttribute($value)
- {
- if ($value) {
- $this->attributes['age'] = implode('-', $value);
- }
- }
- public function viewJobs()
- {
- return $this->hasMany(ViewJob::class, 'job_id', 'id');
- }
- public function personFavorite()
- {
- return $this->hasMany(PersonFavorite::class, 'job_id', 'id');
- }
- public function categoryTrade()
- {
- return $this->belongsTo(Category::class, 'trade');
- }
- public function categoryScale()
- {
- return $this->belongsTo(Category::class, 'scale');
- }
- public function categoryEducation()
- {
- return $this->belongsTo(Category::class, 'education');
- }
- public function categoryWage()
- {
- return $this->belongsTo(Category::class, 'wage');
- }
- public function queueAutoRefreshs()
- {
- return $this->hasMany(QueueAutoRefresh::class, 'pid')->where('utype', 1);
- }
- public function companyInterviews()
- {
- return $this->hasMany(CompanyInterView::class, 'jobs_id');
- }
- public function personalJobsApply()
- {
- return $this->hasMany(PersonalJobsApply::class, 'jobs_id', 'id');
- }
- public function categoryJobsTopClass()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'topclass');
- }
- public function categoryJobsCategory()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'category');
- }
- public function categoryJobsSubClass()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'subclass');
- }
- public function subsiteJobs()
- {
- return $this->hasMany(SubsiteJob::class, 'jobs_id', 'id');
- }
-
- public function companyConsultant()
- {
- return $this->belongsTo(CompanyConsultant::class,'company_id', 'company_id');
- }
-
- public function toSearchableArray()
- {
- $arr = $this ->load(['company','subsiteJobs'])->toArray();
- $arr['age_min']=empty($arr['age'][0])?16:intval($arr['age'][0]);
- $arr['age_max']=empty($arr['age'][1])?99:intval($arr['age'][1]);
- $arr['sex_cn'] = $arr['sex'] == 1?"男":"女";
- $arr['district'] = string_to_array('.', $arr['district']);
- foreach ($arr['district'] as $key => $val) {
- $arr['district_cn'][$key] = get_district_cn($val);
- }
- $arr['trade'] = $arr['company']['trade'];
- $arr['wage_cn'] =get_category($arr['wage']);
- $arr['wage_min'] =$arr['wage_min'];
- $arr['wage_max'] =$arr['wage_max'];
- $arr['trade_cn'] = get_category($arr['trade']);
- foreach ($arr['tag'] as $key => $val) {
- $arr['tag'][$key] = (int)$val;
- }
- foreach ($arr['tag'] as $key => $val) {
- $arr['tag_cn'][$key] =get_category($val);
- }
- $arr['scale_cn'] = get_category($arr['scale']);
- $arr['nature_cn'] = get_category($arr['nature']);
- $arr['education_cn'] = get_category($arr['education']);
- $arr['experience_cn'] = get_category($arr['experience']);
- $arr['intention_jobs_id'] = [$arr['topclass'],$arr['category'],$arr['subclass']];
- $arr['intention_jobs'] = [get_job_category($arr['topclass']),get_job_category($arr['category']),get_job_category($arr['subclass'])];
- $arr['location'] = [
- 'lat'=>is_numeric($arr['map_y'])?$arr['map_y']:0,
- 'lon'=>is_numeric($arr['map_x'])?$arr['map_x']:0
- ];
- $arr['company']['nature_cn'] = get_category($arr['company']['nature']);
- $arr['company']['trade_cn'] = get_category($arr['company']['trade']);
- $arr['company']['scale_cn'] = get_category($arr['company']['scale']);
- $arr['company']['district'] = string_to_array('.', $arr['company']['district']);
- $arr['company']['district_cn'] = string_to_array('/', $arr['company']['district_cn']);
- foreach ($arr['company']['tag'] as $key => $val) {
- $arr['company']['tag'][$key] = (int)$val;
- }
- foreach ($arr['company']['tag'] as $key => $val) {
- $arr['company']['tag_cn'][$key] =get_category($val);
- }
- $arr['company']['location'] = [
- 'lat'=>is_numeric($arr['company']['map_y'])?$arr['company']['map_y']:0,
- 'lon'=>is_numeric($arr['company']['map_x'])?$arr['company']['map_x']:0
- ];
- $arr['company']['subsite_ids'] = [$arr['subsite_id']];
- $arr['subsite_ids'] = array_column($arr['subsite_jobs'], 'subsite_id');
- unset($arr['map_x']);
- unset($arr['map_y']);
- unset($arr['company']['password']);
- unset($arr['company']['remember_token']);
- unset($arr['company']['map_x']);
- unset($arr['company']['map_y']);
- unset($arr['company']['map_zoom']);
- unset($arr['company']['map_open']);
- return $arr;
- }
- }
|