'array', ]; protected static function booted() { parent::booted(); // TODO: Change the autogenerated stub static::addGlobalScope(new CompanyScope); static::creating(function (Requirement $requirement){ $type =DisplayIndexObjectType::REQUIREMENT; $displayIndex = IndexHelper::getObjectMaxIndex($type); $requirement->display_id =$displayIndex; }); } public function scopeAllowed(Builder $query) : void { $requirementsIds = Requirement::query()->withoutGlobalScope(CompanyScope::class)->leftJoin("assets", "requirements.asset_id", "=", "assets.id") ->where(function ($query){ $query->where('assets.acl', AssetACL::CUSTOM->value) ->where('assets.whitelist', 'like', '%,' .Auth::id() . ',%'); }) ->orwhere(function ($query){ $query->where('assets.acl', AssetACL::PRIVATE->value) ->where('assets.created_by', Auth::id()); }) ->orwhere(function ($query){ $query->whereNull('requirements.asset_id'); }) ->pluck("requirements.id")->unique(); $query->whereIn("id", $requirementsIds->toArray())->where('company_id',Auth::user()->company_id); } public function createdBy(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function reviewedBy(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'reviewed_by'); } public function asset(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Asset::class); } public function plan(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Plan::class); } public function group(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(RequirementGroup::class, "requirement_group_id"); } public function tasks(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Task::class); } public function projects():\Illuminate\Database\Eloquent\Relations\BelongsToMany { return $this->belongsToMany(Project::class, 'project_requirement'); } }