在開發 Web 應用時,管理大量資料通常需要處理分頁和格式化顯示的需求。本文將介紹如何在 Laravel 中實現 時間格式轉換 以及 分頁功能,並用實際案例來展示如何將這些功能整合到你的應用程式中。
casts
和 format
)在 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 時不會報錯
分頁是處理大量資料的一個常見需求,Laravel 提供了 paginate
方法來輕鬆實現。這不僅有助於提高性能,還能提升用戶體驗,讓頁面不會因為載入大量資料而變得緩慢。
paginate
在 MovieController
的 index
方法中,我們使用 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
這個樣式。
$casts
屬性,我們可以輕鬆將時間資料庫欄位轉換為適當的格式,並使用 format
方法來顯示用戶友好的時間格式。paginate
方法來簡單地分頁顯示資料,配合 through()
方法進行資料格式化,使得頁面在顯示大量資料時更加高效且具有可讀性。在這篇文章中,我們展示了如何使用 Laravel 的時間格式轉換功能 和 分頁功能 來提升應用的效能和可讀性。這不僅能幫助你管理大量資料,還能提供更好的用戶體驗。接下來會介紹在 Laravel 中設計登入功能。
對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!
大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。
提醒,文章僅供正當的知識參考,文章不負任何責任。