Convert Any Value to Collections with Laravel's Collection::wrap Method
Last updated on by Harris Raftopoulos

Laravel's Collection::wrap method provides seamless conversion of various data types into collections, ensuring consistent collection handling regardless of input format.
The wrap method handles different value types gracefully:
use Illuminate\Support\Collection; // Wrap a single value$collection = Collection::wrap('Alice Smith');// Result: ['Alice Smith'] // Wrap an array$collection = Collection::wrap(['Alice Smith']);// Result: ['Alice Smith'] // Wrap an existing collection$collection = Collection::wrap(collect('Alice Smith'));// Result: ['Alice Smith']
Here's how you might use it in an email notification service:
class NotificationService{ public function sendEmails($recipients, $message) { return Collection::wrap($recipients) ->map(fn($email) => $this->validateEmail($email)) ->filter() ->each(fn($email) => $this->dispatch($email, $message)); } public function assignCategories($product, $categories) { $currentCategories = $product->categories; $newCategories = Collection::wrap($categories) ->unique() ->diff($currentCategories); $product->categories()->sync($newCategories); return $product; } public function formatNotifications($notifications) { return Collection::wrap($notifications) ->map(fn($notification) => [ 'id' => $notification->id, 'message' => $notification->content, 'timestamp' => $notification->created_at ]) ->sortByDesc('timestamp'); }} class AlertController extends Controller{ public function broadcast(Request $request, NotificationService $service) { $alerts = AlertService::latest($request->limit); return $service->formatNotifications($alerts); }}
The wrap method ensures consistent collection handling regardless of input type, making your code more reliable and flexible.