/** * Filter by not Channel Name * * @param \Illuminate\Database\Eloquent\Builder $query * @param dynamic string $channelName * @return \Illuminate\Database\Eloquent\Builder */ public function scopeNotChannel(Builder $query, $channelName) { $channelNames = is_array($channelName) ? $channelName : array_slice(func_get_args(), 1); $channels = self::$channelRepository->getChannelsByName($channelNames); $channelIds = array(); $channels->each(function ($channel) use(&$channelIds) { $channelIds[] = $channel->channel_id; }); if ($channelIds) { array_unshift($channelIds, $query); call_user_func_array(array($this, 'scopeNotChannelId'), $channelIds); } return $query; }
/** * Filter by not Channel Name * * @param \Illuminate\Database\Eloquent\Builder $query * @param dynamic string $channelName * @return \Illuminate\Database\Eloquent\Builder */ public function scopeNotEntryChannel(Builder $query, $channelName) { $channelNames = array_slice(func_get_args(), 1); $channels = self::$channelRepository->getChannelsByName($channelNames); $channelIds = array(); $channels->each(function ($channel) use(&$channelIds) { $channelIds[] = $channel->channel_id; }); if ($channelIds) { $query->whereHas('entries', function ($q) use($channelIds) { $q->whereNotIn('channel_titles.channel_id', $channelIds); }); } return $query; }