classMapper; return $this->belongsToMany( $classMapper->getClassMapping('organisation'), 'organisation_members', 'user_id', 'organisation_id' ) ->orderBy('organisations.name', 'asc') ->withPivot('flag_admin'); } /** * Delete this member from the database, along with any links to organisations. * * @param bool $hardDelete Set to true to completely remove the member and all associated objects. * * @return bool true if the deletion was successful, false otherwise. */ public function delete($hardDelete = false) { /** @var \UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ $classMapper = static::$ci->classMapper; if ($hardDelete) { $classMapper->getClassMapping('organisation')::query() ->where('registrant_id', $this->id) ->update(['registrant_id' => null]); $classMapper->getClassMapping('organisation_approval')::query() ->where('approver_id', $this->id) ->update(['approver_id' => null]); $this->organisations()->detach(); $this->refresh(); } return parent::delete(); } /** * Joins the user's organisations directly, so we can do things like sort, search, paginate, etc. * * @param Builder $query * * @return Builder */ public function scopeJoinOrganisations($query) { $query = $query->select('users.*')->distinct(); $query = $query->leftJoin('organisation_members', 'organisation_members.user_id', '=', 'users.id'); $query = $query->leftJoin('organisations', 'organisations.id', '=', 'organisation_members.organisation_id'); return $query; } }