所謂的路由參數及隱試綁定概念?

閱讀時間約 7 分鐘

接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?

何謂隱式綁定?

在 Laravel 中,路由參數與隱式綁定是相關的概念。隱式綁定是 Laravel 提供的一種方便的方法,可以讓我們更加方便地處理路由參數,讓我們不需要手動透過參數來查詢資料庫或其它資料儲存系統。

隱式綁定透過 Model Binding 的方式實現。我們可以在路由中定義參數名稱,並在控制器方法的參數中使用相應的 Model 類別來接收這個參數。這個方法會自動根據參數的值查詢相應的資料並返回對應的 Model 實例。

首先先介紹路由參數

在 Laravel 中,可以透過路由參數來取得動態的資料。例如,我們可以設定以下路由:

// routes/web.php
Route::get('/users/{id}', 'UserController@show');

當使用者訪問 /users/1 時,Laravel 會自動將 1 這個值作為 id 的值傳給 UserController@show,我們就可以在 show 方法中取得這個值:。

// UserController@show
public function show($id) {
// $id 為路由參數的值
}

隱式綁定的例子:


Route::get('/users/{user}', 'UserController@show');

public function show(User $user) {
return view('users.show', compact('user'));
}

在上面的例子中,我們使用 {user} 來定義路由參數,並使用 User 類別來接收這個參數。在 show 方法中,我們可以直接使用 $user 來存取相應的 User 實例,而不需要手動查詢資料庫,可以看出其實路由參數與隱式綁定很像吧~

隱式綁定還有很多其他的使用方式,例如使用自定義的查詢器、處理多個路由參數等等。

註:隱式模型綁定不會檢索已被軟刪除的模型。但是,您可以通過使用 withTrashed 方法鏈接到路由的定義中,來指示隱式綁定檢索這些模型,而withTrashed 方法主要是告訴查詢器查詢資料時要包含軟刪除的資料

隱式綁定的其他使用方式

在 Laravel 中,隱式綁定還有很多其他的使用方式。以下是一些常見的例子:

(一)使用自定義的查詢器

在 Laravel 中,我們可以使用自定義的查詢器來處理路由參數。例如,如果我們有一個 Post 模型,並希望能夠根據文章標題來查詢文章,可以使用以下的路由定義:

Route::get('/posts/{post:title}', 'PostController@show');

在上面的例子中,我們使用 {post:title} 來定義路由參數,並使用 Post 類別來接收這個參數。在 Post 模型中,我們可以定義一個自定義的查詢器方法 findByTitle,並在 RouteServiceProvider 中註冊:

class Post extends Model
{
public function scopeFindByTitle($query, $title)
{
return $query->where('title', $title);
}
}

class RouteServiceProvider extends ServiceProvider
{
public function boot()
{
Route::bind('post', function ($value) {
return Post::findByTitle($value)->firstOrFail();
});
}
}

在上面的例子中,我們定義了一個 findByTitle 方法,用來查詢標題等於指定值的文章。在 RouteServiceProvider 中,我們使用 Route::bind 方法來註冊這個路由參數的查詢方式。

透過自定義查詢器做法我們將使用假設瀏覽網址為http://localhost/posts/post-one則 Laravel 將使用路由參數post-one調用 PostController@show 方法,並且在路由參數中將其作為 post:title 的值傳遞給Controller,以便您可以在Controller中處理該文章。


class PostController extends Controller{
public function show(Request $request, Post $post){
// $post 參數會自動綁定到路由中的 {post:title} 參數
// 這意味著 $post 參數包含與路由中的文章標題匹配的文章模型實例
// 您可以透過 $post 參數來獲取文章的屬性
return view('posts.show', ['post' => $post]);
}
}


(二)處理多個路由參數

而在 Laravel 中,也可以同時處理多個路由參數。例如,如果我們有一個 Product 模型,希望能夠根據產品類別和產品 ID 來查詢產品,就可以使用以下的路由定義:

Route::get('/products/{category}/{product}', 'ProductController@show');

在上面的例子中,我們使用 {category}{product} 來定義路由參數,並使用 Product 類別來接收這個參數。在 ProductController 中,我們可以定義一個 show 方法來處理這個請求:

public function show($category, Product $product)
{
// ...
}

在上面的例子中,我們同時接收了 $category$product 兩個參數,分別代表產品類別和產品 ID。由於 $product 參數使用了隱式綁定,Laravel 會自動根據產品 ID 查詢對應的產品。

而更多說明跟範例關於 Laravel 的隱式綁定,亦可以參考官方文件 Laravel Implicit Binding 進一步了解其定義和底層實現。

以上是對於laravel 的路由參數及隱式綁定分享介紹~讓你更方便的對參數做後續的應用處理~希望這份說明能讓大家對 Laravel 中的隱式綁定有更深入的了解。


參考文件

Laravel Implicit Binding

Laravel Route Model Binding

需要理解Laravel Request? 參考底下連結了解

Laravel Request 概念

文章同步更新到potato media🔗

https://www.potatomedia.co/s/lu0NYFr

15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
時間追溯至2019年5月,你獨自一人躺在病床上,睜開眼睛,看見的不是家人,而是天花板,以及空無一人的病房。聽見走廊急促又沉重的腳步聲,我敲了門,緩緩打開,看到早已恢復意識的你,我說:很高興你平安的回來了……。 得知你吞藥自殺的當下,我不發一語,然而不是愣住的情況,而是心想,沒想到你終究還是走到這一
Thumbnail
剛剛在Monica-caの543那裡看到了「洪雪珍」三個字,我就來說說我多年來從洪小姐身上得到的啟發吧。你如果在google打「洪雪珍」三個字,後面會跟著的是「爭議」、「幹話」。
最近媽媽進入所謂的安寧善終 對於我這個半輩子都在照顧重症病患的我來說 衝擊之大的⋯⋯ 原來我們可以選擇那麼平靜的方式啊🤗🤗 看著媽媽ㄧ點點的完美退場 卻不時的為我跟姐姐展現笑容 覺得我的母親真的是一個圓滿的結局 感恩姐姐與我的臨終理念是ㄧ致的 我們也開始了許久未有的聊天 我覺得
Thumbnail
溫和而堅定的正向教養到底該怎麼做呢? 看多看久了孩子的問題行為,有時候容易忽略孩子原來的優勢,即使看到好的行為也覺得理所當然,但是如果可以放大這種「理所當然」,才有機會往更健康的方向發展,也減少需要不斷提醒甚至罵人的辛苦,一起來看看怎麼做吧。
Thumbnail
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
Thumbnail
大家好, 今天繼續跟大家分享客觀藝術, 佛陀在《法句經》當中, 曾經說過一個故事, 這個故事是這樣的,它叫做 如影隨形。 就像一個人他站在陽光之下, 影子就會跟著他...
Thumbnail
20年前同主題的一篇文章,訴求的對象是年紀較長的企業『主管們』,如何面對網路世代的年輕員工,在不同世代不同價值觀與職業觀念的差異中如何溝通與互動。20年後類似的文章再度執筆,對象卻是一百八十度的翻轉。當年的『員工』而今可能已經成為了『主管們』或老闆; 當年的『主管』,如今可能已經轉換成了『員工們』
Thumbnail
一個失戀的大學生跑來找我,老師:什麼是愛情,我覺得這個女朋友跟以前交往過的比起來,強烈的吸引我.... 我實在沒興趣潑人冷水,特別是年輕人,好好暢談戀愛,確實是他們這年紀該做的事,但既然他跑來問我,我還是只好告訴他。 我請他告訴我,那女孩特別吸引他的是什麼?找一個他渴望最強烈的時刻,然後他告訴我那女
Thumbnail
人和人相處久了,自然而然的會在心中有了所謂的朋友層級,當然,不可能每個人的談吐、脾氣、個性都可以一拍即合,或許有些人很可以和你談心,有些人很可以和你遊玩,甚至有些人連脾氣都可以默默接受,因為每個人所認知的朋友定義不同,同時能承受的外來影響力也有所不同。  A女和B女是很好的朋友,常常有聊不完的話題,
開一個Facebook粉絲頁、社團或是Line群組,或是潮一點開個instagram帳號,接下來你都知道,要針對自身品牌或商品、服務的定位,提供良好的圖文內容,搭配精確的廣告投放技巧來吸引一群新粉絲,接下來定期利用各項活動、新聞議題、節慶話題甚至是搞笑有趣幽默的內容來促進消費者與你、消費者與消費者的
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
時間追溯至2019年5月,你獨自一人躺在病床上,睜開眼睛,看見的不是家人,而是天花板,以及空無一人的病房。聽見走廊急促又沉重的腳步聲,我敲了門,緩緩打開,看到早已恢復意識的你,我說:很高興你平安的回來了……。 得知你吞藥自殺的當下,我不發一語,然而不是愣住的情況,而是心想,沒想到你終究還是走到這一
Thumbnail
剛剛在Monica-caの543那裡看到了「洪雪珍」三個字,我就來說說我多年來從洪小姐身上得到的啟發吧。你如果在google打「洪雪珍」三個字,後面會跟著的是「爭議」、「幹話」。
最近媽媽進入所謂的安寧善終 對於我這個半輩子都在照顧重症病患的我來說 衝擊之大的⋯⋯ 原來我們可以選擇那麼平靜的方式啊🤗🤗 看著媽媽ㄧ點點的完美退場 卻不時的為我跟姐姐展現笑容 覺得我的母親真的是一個圓滿的結局 感恩姐姐與我的臨終理念是ㄧ致的 我們也開始了許久未有的聊天 我覺得
Thumbnail
溫和而堅定的正向教養到底該怎麼做呢? 看多看久了孩子的問題行為,有時候容易忽略孩子原來的優勢,即使看到好的行為也覺得理所當然,但是如果可以放大這種「理所當然」,才有機會往更健康的方向發展,也減少需要不斷提醒甚至罵人的辛苦,一起來看看怎麼做吧。
Thumbnail
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
Thumbnail
大家好, 今天繼續跟大家分享客觀藝術, 佛陀在《法句經》當中, 曾經說過一個故事, 這個故事是這樣的,它叫做 如影隨形。 就像一個人他站在陽光之下, 影子就會跟著他...
Thumbnail
20年前同主題的一篇文章,訴求的對象是年紀較長的企業『主管們』,如何面對網路世代的年輕員工,在不同世代不同價值觀與職業觀念的差異中如何溝通與互動。20年後類似的文章再度執筆,對象卻是一百八十度的翻轉。當年的『員工』而今可能已經成為了『主管們』或老闆; 當年的『主管』,如今可能已經轉換成了『員工們』
Thumbnail
一個失戀的大學生跑來找我,老師:什麼是愛情,我覺得這個女朋友跟以前交往過的比起來,強烈的吸引我.... 我實在沒興趣潑人冷水,特別是年輕人,好好暢談戀愛,確實是他們這年紀該做的事,但既然他跑來問我,我還是只好告訴他。 我請他告訴我,那女孩特別吸引他的是什麼?找一個他渴望最強烈的時刻,然後他告訴我那女
Thumbnail
人和人相處久了,自然而然的會在心中有了所謂的朋友層級,當然,不可能每個人的談吐、脾氣、個性都可以一拍即合,或許有些人很可以和你談心,有些人很可以和你遊玩,甚至有些人連脾氣都可以默默接受,因為每個人所認知的朋友定義不同,同時能承受的外來影響力也有所不同。  A女和B女是很好的朋友,常常有聊不完的話題,
開一個Facebook粉絲頁、社團或是Line群組,或是潮一點開個instagram帳號,接下來你都知道,要針對自身品牌或商品、服務的定位,提供良好的圖文內容,搭配精確的廣告投放技巧來吸引一群新粉絲,接下來定期利用各項活動、新聞議題、節慶話題甚至是搞笑有趣幽默的內容來促進消費者與你、消費者與消費者的