hasMany(File::class); } /** * Relationship with parent/sub directories * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function allSubdirectories() { $subdirectories = $this->hasMany(Directory::class, 'parent_id', 'id'); // todo fix this ugly hack! statement above produces WHERE parent_id IS NOT NULL and parent_id IS NULL when selecting subdirectories from root/none directory if (is_null($this->id)) { $subdirectories = $subdirectories->orWhereNull('parent_id'); } return $subdirectories; } public function subdirectories() { $subdirectories = $this->allSubdirectories() ->where('hidden', false); return $subdirectories; } }