0
点赞
收藏
分享

微信扫一扫

Laravel — P52:显式路由模型绑定

钎探穗 2023-02-12 阅读 115

什么时候需要显式绑定模型与使用 Laravel 的隐式绑定?我经常发现的一个常见问题没有适当或足够简单的回答。因此,我认为它没有像应有的那样频繁使用。

在前面的示例中,我们使用了以下隐式路由模型绑定技术。

use App\Models\User;

Route::get('/implicit-binding/{user}', function (User $user) {
return $user;
});

use App\Models\User;

Route::get('/implicit-binding/{user}', function (User $user) {
if ($user->email_verified_at != null) {
return $user;
}

abort(404);
});

显式路由模型绑定

use App\Models\User;

Route::get('/explicit-binding/{verifiedUser}', function (User $user) {
return $user;
});

Route::bind('verifiedUser', function($value) {
return User::where('id', $value)
->where('email_verified_at', '!=', null)
->firstOrFail();
});

 Laravel — P52:显式路由模型绑定_User

<?php

namespace App\Providers;

use App\Models\User;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;

class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* Typically, users are redirected here after authentication.
*
* @var string
*/
public const HOME = '/home';

/**
* Define your route model bindings, pattern filters, and other route configuration.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();

$this->routes(function () {
Route::middleware('api')
->prefix('api')
->group(base_path('routes/api.php'));

Route::middleware('web')
->group(base_path('routes/web.php'));
});

Route::bind('verifiedUser', function($value) {
return User::where('id', $value)
->where('email_verified_at', '!=', null)
->firstOrFail();
});
}

// ...
}

举报

相关推荐

0 条评论