Laravel:Route Wildcards 2

前言

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

这几天学到可以不用透过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)

>>:  [Day30] 完赛心得

.Net Core Web Api_笔记19_api结合ADO.NET资料库操作part7_新闻文章的编辑更新与删除

首先操作部分 删除及编辑页面回填By NewsId查询的Action 扩充 using Micro...

Day 30 关於这次的铁人赛,那些没能提到的事情

终於到最後一天了,可喜可贺可喜可贺!其实我也知道在这30天的期间内还有很多没能讲到的东西,既然都到最...

[Day09] Tableau 轻松学 - Data Source 页面

前言 若实作中遇到与资料来源有关的设定,会回到 Data Source 页面来做调整,因此在进入实作...

#07 简介篇 — 使用 Next.js 的各种 Data Fetching 方式实作小专案 ft. Github API

看了好几天的 Next.js 介绍,是不是想要开始做个小专案,试试 Next.js 呢?我今天做了小...

[Day11] 团队系统设计 - 估点系统 (上)

2020年的 Q4 期间,我对几场面试的印象非常深刻,连续三位来自不同公司,不同领域背景的应徵者,不...