You can do this very simply in a few steps.
Create a new middleware (name it whatever you want)
php artisan make:middleware UserCollectionMiddleware
, Eloquent. , , . Illuminate\Database\Eloquent\Collection.
//UserCollection.php
<?php namespace App\Collection;
use Illuminate\Database\Eloquent\Collection;
class UserCollection extends Collection {
}
app/Http/Middleware/UserCollectionMiddleware.php
<?php namespace App\Http\Middleware;
use Closure;
use App\User;
use App\Collection\UserCollection;
class UserCollectionMiddleware {
public function handle($request, Closure $next)
{
app()->bind('App\Collection\UserCollection', function() {
return new UserCollection(User::all()->toArray());
});
return $next($request);
}
}
,
Route::get('home', [
'middleware' => 'App\Http\Middleware\UserCollectionMiddleware',
'uses' => 'HomeController@index'
]);
,
<?php namespace App\Http\Controllers;
use App\Collection\UserCollection;
class HomeController extends Controller {
public function index(UserCollection $users)
{
return view('home', compact('users'));
}
}