Laravel(時間參數與分頁功能)

更新於 發佈於 閱讀時間約 8 分鐘

在開發 Web 應用時,管理大量資料通常需要處理分頁和格式化顯示的需求。本文將介紹如何在 Laravel 中實現 時間格式轉換 以及 分頁功能,並用實際案例來展示如何將這些功能整合到你的應用程式中。

1. 轉換時間格式(castsformat

在模型中轉換時間格式

MovieList 模型中,我們需要將資料庫中的 publish_date 欄位轉換為適合顯示的時間格式。這可以透過 Laravel 的 Cast 功能來實現。

首先,打開你的 MovieList 模型檔案,並在 $casts 屬性中加入 publish_date 欄位的轉換設定。這樣,你就可以將 publish_date 自動轉換為 datetime 類型,並在後續操作中方便地格式化。

protected $casts = [
'movie_types_id' => 'int',
'film_length' => 'int',
'publish_date' => 'datetime', // 將 publish_date 轉換為 datetime 類型
'price' => 'int'
];

這段程式碼確保了 publish_date 欄位的資料會被自動轉換為 Carbon 類型,這是 Laravel 預設的日期時間處理工具。接著,我們可以在展示時使用 format 方法來轉換為我們所需的格式。

$movie->publish_date->format('Y/m/d');  // 格式化為 年/月/日

轉換後的格式化範例

在我們的應用程式中,通常會將日期格式化為像是 YYYY/MM/DD 的形式。使用 Carbon 類型的方法,我們可以輕鬆地達成這個目標:

$movie->publish_date?->format('Y/m/d');  // 使用問號確保當時間為 null 時不會報錯

2. 使用分頁來顯示大量資料

分頁是處理大量資料的一個常見需求,Laravel 提供了 paginate 方法來輕鬆實現。這不僅有助於提高性能,還能提升用戶體驗,讓頁面不會因為載入大量資料而變得緩慢。

在控制器中使用 paginate

MovieControllerindex 方法中,我們使用 paginate(5) 來每頁顯示 5 條電影資料。這樣能確保用戶在瀏覽電影資料時,不會一次性加載過多的資訊,從而保持頁面的流暢性。

public function index()
{
// 使用 paginate 來處理分頁,這裡每頁顯示 5 條資料
$data = MovieList::paginate(5);

return Inertia::render('Backend/Movie/MovieIndex', [
// 當使用 paginate 時,透過 through 進行資料轉換
'movie' => $data->through(function ($item) {
return [
'id' => $item->id,
'name' => $item->name,
'film_length' => $item->film_length,
'price' => $item->price,
'publish_date' => $item->publish_date?->format('Y/m/d'), // 格式化 publish_date
];
}),
]);
}

在這段程式碼中,我們首先使用 paginate(5) 來獲取每頁 5 條資料,並且利用 through() 方法對每一條資料進行格式化,特別是 publish_date 欄位,這裡我們格式化為 YYYY/MM/DD

頁面顯示分頁導航

接著,我們需要在前端頁面顯示分頁導航,讓用戶能夠切換到不同的頁面。在 MovieIndex 視圖中,我們使用 movie.links 屬性來渲染分頁連結。

<ul class="flex gap-4 mt-4">
<li v-for="(page, index) in movie.links" :key="index">
<Link
:href="page.url ?? ''"
class="p-2"
:class="{ 'bg-blue-500 text-white': page.active, 'opacity-50 pointer-events-none': !page.url }"
>
<span v-if="page.label.includes('Previous')">前一頁</span>
<span v-else-if="page.label.includes('Next')">後一頁</span>
<span v-else>{{ page.label }}</span>
</Link>
</li>
</ul>

在這段程式中,我們迭代 movie.links,這是 Laravel 提供的分頁連結物件,它包含了前一頁、下一頁以及每頁的頁碼。根據這些資料,我們渲染出相應的按鈕,並且使用 :class 來動態修改按鈕的樣式,例如當按鈕是當前頁時,會加上 bg-blue-500 text-white 這個樣式。

3. 小結

如何提高應用的性能與可讀性

  • 時間格式轉換:透過 $casts 屬性,我們可以輕鬆將時間資料庫欄位轉換為適當的格式,並使用 format 方法來顯示用戶友好的時間格式。
  • 分頁功能:使用 paginate 方法來簡單地分頁顯示資料,配合 through() 方法進行資料格式化,使得頁面在顯示大量資料時更加高效且具有可讀性。

最後

在這篇文章中,我們展示了如何使用 Laravel 的時間格式轉換功能分頁功能 來提升應用的效能和可讀性。這不僅能幫助你管理大量資料,還能提供更好的用戶體驗。接下來會介紹在 Laravel 中設計登入功能。


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。

 

提醒,文章僅供正當的知識參考,文章不負任何責任。



留言
avatar-img
留言分享你的想法!
avatar-img
阿棋的沙龍
2會員
34內容數
有軟體開發相關文章。
阿棋的沙龍的其他內容
2025/02/19
在現代的Web應用中,發送即時郵件通知是一項常見的需求。無論是訂單狀態更新、賬單付款通知,還是帳號活動警報,這些通知都能讓用戶即時了解重要信息,並提升使用者體驗。今天,將介紹如何在Laravel中實現一個簡單的郵件通知系統,並演示如何使用通知來通知使用者。
2025/02/19
在現代的Web應用中,發送即時郵件通知是一項常見的需求。無論是訂單狀態更新、賬單付款通知,還是帳號活動警報,這些通知都能讓用戶即時了解重要信息,並提升使用者體驗。今天,將介紹如何在Laravel中實現一個簡單的郵件通知系統,並演示如何使用通知來通知使用者。
2025/02/12
網站的安全性對於保護用戶資料和防止惡意攻擊至關重要。對於許多應用來說,實現Email驗證和兩步驟驗證(2FA)是增強用戶安全的一種有效方式。今天將探索如何在Laravel框架中實現這兩項功能,並結合Google Gmail的應用程式密碼,從而保障你網站的用戶帳號安全。
2025/02/12
網站的安全性對於保護用戶資料和防止惡意攻擊至關重要。對於許多應用來說,實現Email驗證和兩步驟驗證(2FA)是增強用戶安全的一種有效方式。今天將探索如何在Laravel框架中實現這兩項功能,並結合Google Gmail的應用程式密碼,從而保障你網站的用戶帳號安全。
2025/02/05
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
2025/02/05
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
這篇文章記錄在 Linux server 上使用 Laravel schedule 排程任務的過程,包含 Laravel schedule 的定義、以及設定 Linux crontab 的步驟,並說明其中需要注意的權限問題。
Thumbnail
這篇文章記錄在 Linux server 上使用 Laravel schedule 排程任務的過程,包含 Laravel schedule 的定義、以及設定 Linux crontab 的步驟,並說明其中需要注意的權限問題。
Thumbnail
在 Laravel 開發 API 時,直接在 Controller 內進行資料加工可能會讓程式碼變得雜亂且難以維護。因此,Laravel 提供 Resource (資源轉換器) 來解決這個問題,讓我們可以統一管理 API 的輸出格式,將模型model或模型集合collection轉換為適合 API
Thumbnail
在 Laravel 開發 API 時,直接在 Controller 內進行資料加工可能會讓程式碼變得雜亂且難以維護。因此,Laravel 提供 Resource (資源轉換器) 來解決這個問題,讓我們可以統一管理 API 的輸出格式,將模型model或模型集合collection轉換為適合 API
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
放鬆的週末,我與幾位同事決定提升我們的後端開發技巧,選擇了「日期範圍生成器」作為我們的小型實作。作為團隊中較有經驗的PHP工程師,我引領著團隊從基礎程式碼的撰寫開始,進而深入到物件導向的結構調整,最後提高程式可擴充性的挑戰。雖然過程中遇到不少困難,但我們通過不斷的討論和優化,最終成功克服了所有挑戰。
Thumbnail
放鬆的週末,我與幾位同事決定提升我們的後端開發技巧,選擇了「日期範圍生成器」作為我們的小型實作。作為團隊中較有經驗的PHP工程師,我引領著團隊從基礎程式碼的撰寫開始,進而深入到物件導向的結構調整,最後提高程式可擴充性的挑戰。雖然過程中遇到不少困難,但我們通過不斷的討論和優化,最終成功克服了所有挑戰。
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News