Laravel:Route Wildcards - iT 邦帮忙::一起帮忙解决难题,拯救 IT 人的一天
之前有分享过Laravel wildcards的使用,除了可以最简单的传值,也可以透过id取得整个model。
像这样:
Route('/users/{user}'[App\Http\Controllers\UsersController, 'show']);
只要wildcard那是id,且controller的方法有定义输入参数是对应model(下面例子是User),这就可以取得整个model。
public function show(User $user) //这边要定义输入是你要的model,这边是User
{
return $user // 会是一个user model
}
这几天学到可以不用透过id,而是透过其他栏位取得model的方法。
这个方法很简单,就是透过修改物件导向父类别中的一个方法(function)就行了!
以User为例,在User.php
中新增以下方法,并回传想要透过哪个栏位取得model,例如使用name
public function getRouteKeyName()
{
return 'name';
}
这样就完成了!
现在来测试看看,假设User的第一笔资料(id:1)的名字是Amy,
如果原本是靠id取得整个model,像这样:https://example/users/1
,
可以变成输入name取得model,像这样:https://example/users/AmyChen
。
取得输入的
public function foo($bar)
{
return $bar
}
取得整个model(预设输入id)
public function foo(Model $bar)
{
return $bar
}
取得整个model(自定义要依什麽栏位找)
public function foo(Model $bar)
{
return $bar
}
跟上面一样,但要model里要复写掉原本的设定。
public function getRouteKeyName()
{
return 'desiredColumnName';
}
<<: 【Day 24】用 SOLID 方式开发 React (1)
首先操作部分 删除及编辑页面回填By NewsId查询的Action 扩充 using Micro...
终於到最後一天了,可喜可贺可喜可贺!其实我也知道在这30天的期间内还有很多没能讲到的东西,既然都到最...
前言 若实作中遇到与资料来源有关的设定,会回到 Data Source 页面来做调整,因此在进入实作...
看了好几天的 Next.js 介绍,是不是想要开始做个小专案,试试 Next.js 呢?我今天做了小...
2020年的 Q4 期间,我对几场面试的印象非常深刻,连续三位来自不同公司,不同领域背景的应徵者,不...