/** * @param $amount - how many locations to pick * @param $exclude - array of locations to exclude * @return mixed */ public static function pickUnused($amount, $exclude = []) { $used = array_keys(Location::has('targets')->get()->keyBy('id')->toArray()); foreach ($exclude as $location) { $used[] = $location->id; } $available = Location::whereNotIn('id', $used)->get(); $locations = $available->random($amount); return $locations; }