belongsToMany(Post::class); } // public function parent() { return $this->belongsTo(Group::class, 'parent_id'); } public function children() { return $this->hasMany(Group::class, 'parent_id'); } public function getRouteKeyName() { return 'slug'; } public function author() { return $this->belongsTo(\App\Models\User::class); } public function imgUrl() { if ($this->image == null) { return asset('/assets/upload/logo.svg'); } return \Storage::url('groups/optimized-' . $this->image); } public function imgOriginalUrl() { if ($this->image == null) { return asset('/assets/upload/logo.svg'); } return \Storage::url('groups/' . $this->image); } public function bgUrl() { if ($this->bg == null) { return asset('/assets/upload/logo.svg'); } return \Storage::url('groups/optimized-' . $this->bg); } public function bgOriginalUrl() { if ($this->bg == null) { return asset('/assets/upload/logo.svg'); } return \Storage::url('groups/' . $this->bg); } public function attachs() { return $this->morphMany(Attachment::class, 'attachable'); } public function webUrl() { return fixUrlLang(route('client.group',$this->slug)); } public function published($limit = 10, $order = 'id', $dir = 'DESC') { return $this->posts()->where('status', 1) ->orderBy($order, $dir)->limit($limit)->get(['title', 'slug', 'icon']); } public function evaluations(){ return Evaluation::where(function ($query) { $query->whereNull('evaluationable_type') ->whereNull('evaluationable_id'); })->orWhere(function ($query) { $query->where('evaluationable_type', Group::class) ->whereNull('evaluationable_id'); })->orWhere(function ($query ) { $query->where('evaluationable_type', Group::class) ->where('evaluationable_id',$this->id); })->get(); } }