Laravel MVC 架構與 CRUD 操作說明
MVC 架構說明
MVC 架構(Model-View-Controller)是一種軟體設計模式,將應用程式分為三部分:
- Model(模型):處理資料邏輯與資料庫互動。
- View(視圖):負責顯示資料給使用者。
- Controller(控制器):處理使用者輸入,並決定呼叫哪個模型或回傳哪個視圖。
此架構有助於分離關注點,提高程式碼可維護性與重用性。
建立檔案
在 routes/web.php 設定路由:
Read 查詢資料
單筆查詢
多筆查詢
Create 新增資料
Update 更新資料
Delete 刪除資料
分頁查詢
分頁屬性與方法
total():總項目數
count():當前頁項目數
perPage():每頁顯示數量
currentPage():目前頁碼
lastPage():最後一頁頁碼
nextPageUrl()、previousPageUrl():分頁網址
toArray()、toJson():轉換為陣列或 JSON
保留查詢條件
Trait 重用程式碼
Accessor 自訂屬性讀取
使用 Symfony Response 工具
類型判斷 instanceof
Laravel MVC 架構與 CRUD 操作說明
MVC 架構說明
MVC 架構(Model-View-Controller)是一種軟體設計模式,將應用程式分為三部分:
此架構有助於分離關注點,提高程式碼可維護性與重用性。
建立檔案
php artisan make:model ModelName # 建立模型 php artisan make:controller ControllerName # 建立控制器 php artisan make:controller ControllerName -r # 建立控制器含預設 CRUD 方法 php artisan make:migration MigrationName # 建立資料表結構檔案 php artisan migrate # 執行 migration在
routes/web.php設定路由:use App\Http\Controllers\ControllerName; Route::resource('ModelName', ControllerName::class);Read 查詢資料
單筆查詢
public function show(ModelName $ID) { return response($ID, Response::HTTP_OK); }多筆查詢
public function index() { $result = ModelName::all(); return response($result, Response::HTTP_OK); }Create 新增資料
use App\Models\ModelName; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; public function store(Request $request) { $result = ModelName::create($request->all()); $result = $result->refresh(); // 取得最新資料 return response($result, Response::HTTP_CREATED); }Update 更新資料
public function update(Request $request, ModelName $ID) { $ID->update($request->all()); $ID = $ID->refresh(); return response($ID, Response::HTTP_OK); }Delete 刪除資料
public function destroy(ModelName $ID) { $ID->delete(); return response(null, Response::HTTP_NO_CONTENT); }分頁查詢
$items = ModelName::paginate($perPage);分頁屬性與方法
total():總項目數count():當前頁項目數perPage():每頁顯示數量currentPage():目前頁碼lastPage():最後一頁頁碼nextPageUrl()、previousPageUrl():分頁網址toArray()、toJson():轉換為陣列或 JSON保留查詢條件
$posts->appends(request()->query()); $posts->appends(['param' => $value]);Trait 重用程式碼
trait Logger { public function log($message) { echo "Logging: $message\n"; } } class User { use Logger; public function register() { $this->log('User registered'); } }Accessor 自訂屬性讀取
class Product extends Model { public function getPriceAttribute($value) { return number_format($value * 1.1, 2); // 加稅後價格 } } class User extends Model { public function getReferralAttribute() { return 'Your referral code goes here'; } }使用 Symfony Response 工具
use Symfony\Component\HttpFoundation\Response; $response = new Response(); $response->setContent('Hello, World!'); $response->setStatusCode(Response::HTTP_OK); $response->headers->set('Content-Type', 'text/plain'); $response->send();類型判斷
instanceofif ($object instanceof ClassName) { // true 表示 $object 是 ClassName 的實例 }