withoutGlobalScope(CompanyScope::class)->leftJoin("assets", "plans.asset_id", "=", "assets.id") ->where(function ($query){ $query->where('assets.acl', AssetACL::PRIVATE->value) ->where('assets.owner', Auth::id()); }) ->orwhere(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()); }) ->pluck("plans.id")->unique(); $query->whereIn("id", $planIds->toArray())->where('company_id',Auth::user()->company_id); } public function requirements() { return $this->hasMany(Requirement::class); } public function projects() { return $this->belongsToMany(Project::class, 'project_plan', 'plan_id', 'project_id'); } public function children() { return $this->hasMany(Plan::class, 'parent_id'); } public function asset(){ return $this->belongsTo(Asset::class); } }