网易首页 > 网易号 > 正文 申请入驻

3分钟短文:Laravel路由加模型等于?

0
分享至

引言

上一章我们用3分钟时间光速入门了laravel控制的用法,本章不准备说控制器了,说一说另外俩模块,就是路由Route和模型Model,这俩直接加起来,会有什么奇思妙想的发生呢?

请大家接着往下看。

代码时间

还是最早我们讲的那种方式,在路由地址上通过位置参数绑定,我们可以获取到用户输入的数据。只不过,为了与模型文件对应起来,可以直接在路由处理方法的闭包内调用模型方法,并组装数据返回。

比如传入id数值,返回查询后的结果:

Route::get('conferences/{id}', function ($id) {
$conference = Conference::findOrFail($id);
});

其中findOrFail方法是一个内置的语法糖,用于根据id查询条目,找不到的抛出404错误页面。上面的路由也是很多地方都在用的通用的做法,可是程序员总是懒惰的,能少写一行就少写一行。laravel为我们准备了更多。

隐式绑定

首先来看一下默认的隐式路由模型绑定

什么意思呢?就是路由内默认使用某个变量传入参数,这个键名与执行方法变量名相同,那么系统就会根据传入的参数,在执行方法内使用依赖注入方式实例化一个模型,而实例化的方法,恰恰就是传入的参数的查询结果集

说了半天很绕对不对?看一个例子就明白了:

Route::get('conferences/{conference}', function (Conference $conference) {
return view('conferences.show')->with('conference', $conference);
});

简单地说,路由地址内的变量{conference}跟执行方法变量名$conference撞名了,这个时候系统就会想了,这是要用隐式的绑定模式啊。于是,把{conference}的值,作为查询条件,使用执行方法内的模型Conference实例化并执行查询结果,并赋值给$conference变量。

自定义键名

而路由内这个{conference}传什么数值呢?根据系统默认值,就是ID。如果你不想用ID,想用别的列字段进行查询,那也可以,比如这样写:

Route::get('conferences/{conference:title}', function (Conference $conference) {
return view('conferences.show')->with('conference', $conference);
});

那么实例化的时候,就认为这个位置参数传的是title字段用于查询的条件。

懒人写法

如果整个模型默认都不会用id这个字段查询,那么在模型内重载实现下述方法即可:

public function getRouteKeyName()
{
return 'title';
}

如果需要修改的路由模型绑定字段太多,又不想挨个去写模型文件,可不可以集中起来管理呢?是可以的,在文件App\Providers\RouteServiceProvider内手动追加类似以下代码:

public function boot(Router $router)
{
parent::boot($router);
$router->model('title', Conference::class);
}

在此处写了,模型内就不用手动实现getRouteKeyName方法了。

写在最后

本文讲了一个再实际工程中用的甚至不是太多的一个功能——路由模型绑定,却能为大家打开思路提供很多帮助。

诸位还记得之前章节我们介绍的使用 slug 方式查询数据集吗?那正是典型的路由模型绑定。有兴趣的同学可以往前翻一番图文,或关键词搜索slug

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
油价大逆转!国内油价调整时间定了,6月4日历史罕见油价大幅下调

油价大逆转!国内油价调整时间定了,6月4日历史罕见油价大幅下调

有料财经
2026-06-02 19:38:40
为什么现在外敌越来越不怕中国?著名军事专家戴旭曾一针见血

为什么现在外敌越来越不怕中国?著名军事专家戴旭曾一针见血

飘逸的云朵
2026-06-02 21:01:26
雷霆梭哈方案曝光!杰威+多枚首轮签交易,留霍姆格伦联手字母哥

雷霆梭哈方案曝光!杰威+多枚首轮签交易,留霍姆格伦联手字母哥

夜白侃球
2026-06-02 13:08:03
趁你病,要你命!法国特种兵突袭11万吨油轮,乌军将轰炸西伯利亚

趁你病,要你命!法国特种兵突袭11万吨油轮,乌军将轰炸西伯利亚

李健政观察
2026-06-01 18:56:46
20天飙涨123%!A股,又一只翻倍牛股登场!

20天飙涨123%!A股,又一只翻倍牛股登场!

21世纪经济报道
2026-06-02 23:10:38
我国“玻璃硬盘”明年有望大规模量产:一片能存360TB数据

我国“玻璃硬盘”明年有望大规模量产:一片能存360TB数据

IT之家
2026-06-02 10:15:05
杭州限狗令正式落地,养狗人月花上千,凭什么让不养狗的人买单?

杭州限狗令正式落地,养狗人月花上千,凭什么让不养狗的人买单?

奇思妙想草叶君
2026-06-01 19:40:34
9死76伤,泽连斯基放弃反击,基辅改口求和后,普京一句话浇凉水

9死76伤,泽连斯基放弃反击,基辅改口求和后,普京一句话浇凉水

叹为观止易
2026-06-03 00:25:00
俄乌网被禁言,就想知道谁给了它挑衅甚至辱骂中国网民的底气?

俄乌网被禁言,就想知道谁给了它挑衅甚至辱骂中国网民的底气?

壹家言
2026-06-02 11:25:28
张雪卸任!

张雪卸任!

投资时间网
2026-06-02 16:01:59
她是王洪文亲信,曾任上海市委书记,1982年被判了17年

她是王洪文亲信,曾任上海市委书记,1982年被判了17年

鉴史录
2026-06-02 15:15:51
血型决定寿命长短?60万人研究发现:A型血“天生”更易中风

血型决定寿命长短?60万人研究发现:A型血“天生”更易中风

芹姐说生活
2026-06-02 23:14:30
“割四赔五”风波升级:多家派出所介入,网红出面也无力扭转局面

“割四赔五”风波升级:多家派出所介入,网红出面也无力扭转局面

北纬的咖啡豆
2026-06-01 19:33:09
“一车人安全带都是P上去的”,公安部发声

“一车人安全带都是P上去的”,公安部发声

中国网
2026-06-02 21:09:03
独家:原中国航天科工集团董事长曾是著名导弹专家   其妻子曾在宾馆工作? 照顾了他半生

独家:原中国航天科工集团董事长曾是著名导弹专家  其妻子曾在宾馆工作? 照顾了他半生

新浪财经
2026-05-31 15:40:03
失业后我才明白,只有愚蠢的人,才会花几十万在农村建房子

失业后我才明白,只有愚蠢的人,才会花几十万在农村建房子

三农雷哥
2026-05-12 11:36:27
诺贝尔经济学奖得主克鲁格曼:对中国经济的评估

诺贝尔经济学奖得主克鲁格曼:对中国经济的评估

生命可以承受之轻
2026-06-02 15:57:17
海藻为什么是男人眼中的极品

海藻为什么是男人眼中的极品

乡野小珥
2026-06-01 18:15:36
微信将迎史诗级变革?腾讯市值瞬间暴涨4000亿

微信将迎史诗级变革?腾讯市值瞬间暴涨4000亿

说财猫
2026-06-02 22:20:54
黄仁勋拿下宇树科技,震惊全网!

黄仁勋拿下宇树科技,震惊全网!

财经三分钟pro
2026-06-02 15:09:08
2026-06-03 02:20:49
程序员小助手
程序员小助手
专注编程知识IT领域原创作者
254文章数 1793关注度
往期回顾 全部

科技要闻

烧掉千亿后,美团、阿里、京东谁先止血?

头条要闻

内塔尼亚胡:伊朗恐怖政权注定消失 以色列将帮助实现

头条要闻

内塔尼亚胡:伊朗恐怖政权注定消失 以色列将帮助实现

体育要闻

1米74的业余联赛替补,在英超踢中卫

娱乐要闻

奚梦瑶何猷君补办婚礼超幸福

财经要闻

智元和宇树的“暗战”愈演愈烈

汽车要闻

星途神秘新车轮廓曝光 又一款性能SUV要来了?

态度原创

游戏
教育
健康
数码
房产

离发售不远了!《寂静岭》系列新作已公开游戏评级

教育要闻

把学生全送进美团!女老师战绩流出,网友:能保住教资也不容易

违规干细胞应用,暗藏致命隐患!

数码要闻

苹果watchOS 27前瞻:改进心率追踪、引入新表盘、升级Siri

房产要闻

5200巨量投资曝光!未来五年,海南格局大变!

无障碍浏览 进入关怀版