Hootlex\Friendships\Models\Friendship::scopeWhereGroup PHP Method

scopeWhereGroup() public method

public scopeWhereGroup ( $query, Model $model, string $groupSlug ) : Builder
$query
$model Illuminate\Database\Eloquent\Model
$groupSlug string
return Illuminate\Database\Eloquent\Builder
    public function scopeWhereGroup($query, $model, $groupSlug)
    {
        $groupsPivotTable = config('friendships.tables.fr_groups_pivot');
        $friendsPivotTable = config('friendships.tables.fr_pivot');
        $groupsAvailable = config('friendships.groups', []);
        if ('' !== $groupSlug && isset($groupsAvailable[$groupSlug])) {
            $groupId = $groupsAvailable[$groupSlug];
            $query->join($groupsPivotTable, function ($join) use($groupsPivotTable, $friendsPivotTable, $groupId, $model) {
                $join->on($groupsPivotTable . '.friendship_id', '=', $friendsPivotTable . '.id')->where($groupsPivotTable . '.group_id', '=', $groupId)->where(function ($query) use($groupsPivotTable, $friendsPivotTable, $model) {
                    $query->where($groupsPivotTable . '.friend_id', '!=', $model->getKey())->where($groupsPivotTable . '.friend_type', '=', $model->getMorphClass());
                })->orWhere($groupsPivotTable . '.friend_type', '!=', $model->getMorphClass());
            });
        }
        return $query;
    }