在我正在处理的代码库中,路由使用路由参数.不过,我注意到了一些有趣的事情.看起来有{flight:id}个.

Route:

Route::get('/flight/{flight:id}', [FlightController::class, 'book'])->where('flight','[0-9]+');

我不知道冒号:id是做什么的.这是Laravel的功能吗?

在控制器中,book方法不查询模型.它似乎只是把航班传递给了它.模型在哪里访问数据库?

Controller:

public function book($domain, Flight $flight)
    {

        return view('flights.booked',[
            'flight' => $flight,
        ]);

    }

在我能在网上找到的每个示例中,控制器仍然使用传递的id访问模型.

推荐答案

flight/{field:id}是Laravel的功能,它告诉Laravel如何在路由-模型绑定期间构建关联的Flight $flight模型.

默认情况下,它使用Model的主键(通常是id),因此如果您的Model使用id,您可以只使用flight/{flight},而Flight $flight将起作用.

如果您想使用其他值,比如uuidslug,您可以将其修改为flight/{flight:uuid}flight/{flight:slug},Flight $flight将基于从数据库中提供的keycolumn值来构造.

文档可以在以下位置找到:

https://laravel.com/docs/10.x/routing#customizing-the-key

Php相关问答推荐

如果活动订阅者的购物车中有订阅项目,则在WooCommerce签出中显示通知

Symfony/Panther Web抓取不适用于登录后的内容(云功能)

如何在不指定symfony列的情况下从数据库中获取行数组

将变体设置字段添加到WooCommerce中的特定变量产品

WooCommerce我的帐户:从帖子作者处获取自定义帖子类型帖子ID

Laravel:如何展平多维Eager 加载的集合

laravel中获取的数据会自动更改时间戳值

如果日期是过go 日期,则隐藏事件发布类型

使用DOMPDF获取PDF格式的本 map 像

防止同时从Laravel中的用户帐户中提取

API 平台 - UI 服务器端点定义

需要以一种形式执行两个操作

htaccess 重定向子域错误的 url

从 Laravel 机制中排除目录并直接访问该目录

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

WooCommerce单个产品页面上启用额外选项卡的产品元框字段

在这个 Laravel 应用中,如何仅显示已批准的 comments 回复?

在 WordPress 中使用 $wpdb 运行 MySQL 事务是否安全?

如何正确使用Flysystem和Local Adapter

复杂的mysql查询问题