Laravel11開發購物車day1在這篇文章中,我將分享如何使用Laravel11建立一個簡單的購物車系統。我們將涵蓋如何設計資料庫結構、建立模型以及處理資料庫遷移的過程。此次的實作將包含六個主要模型:Menu,Product,ProductImage,Member,Order,和OrderDetail。購物車系統的架構設計在開始之前,我們需要設計購物車系統的架構。每個購物車系統通常需要處理以下幾種資料:Menu:用來分類產品的菜單,例如不同種類的商品分類。Product:真正的產品資料,包括價格和描述等。ProductImage:儲存產品的圖片連結,以便顯示給用戶。Member:會員資料,代表購物的用戶。Order:代表每次購物所建立的訂單。OrderDetail:每筆訂單內的詳細內容,儲存購買的產品及數量等。這些資料表彼此關聯,例如,Product屬於Menu,而OrderDetail則包含Order和Product的資訊。第一步:建立Menu模型與資料庫遷移首先,我們使用Laravel的Artisan工具來建立Menu模型和對應的資料表遷移。使用以下指令來生成遷移文件:bashphpartisanmake:migrationcreatemenustable在createmenustable的遷移文件中,設置基本的表結構,包括name和description欄位。phpSchema::create'menus',functionBlueprint$table{$tableid;$tablestring'name';$tabletext'description'nullable;$tabletimestamps;};接著,我們建立Menu模型:···bashphpartisanmake:modelMenu···Menu模型主要有一個hasMany關聯,代表一個Menu會有多個Product。phpclassMenuextendsModel{protected$fillable'name','description'];publicfunctionproducts{return$thishasManyProduct::class;}}第二步:建立Product和ProductImage模型產品是購物車系統的核心,因此我們需要建立Product模型和它的圖片關聯。首先,建立Product的資料表遷移:bashphpartisanmake:migrationcreateproductstable在遷移文件中,我們加入基本的產品資料,包括名稱、價格、描述,以及menuid來建立產品與菜單之間的關聯。phpSchema::create'products',functionBlueprint$table{$tableid;$tableforeignId'menuid'constrainedonDelete'cascade';$tablestring'name';$tabledecimal'price',8,2;$tabletext'description'nullable;$tabletimestamps;};接著,我們建立Product模型:phpclassProductextendsModel{protected$fillable'menuid','name','price','description'];publicfunctionmenu{return$thisbelongsToMenu::class;}publicfunctionimages{return$thishasManyProductImage::class;}}然後我們需要為產品圖片建立ProductImage模型及遷移,並確保它與產品關聯。bashphpartisanmake:modelProductImagephpartisanmake:migrationcreateproductimagestablephpSchema::create'productimages',functionBlueprint$table{$tableid;$tableforeignId'productid'constrainedonDelete'cascade';$tablestring'imagepath';$tabletimestamps;};ProductImage模型:phpclassProductImageextendsModel{protected$fillable'productid','imagepath'];publicfunctionproduct{return$thisbelongsToProduct::class;}}第三步:建立會員系統Member購物車系統需要知道誰在購物,因此我們需要建立會員模型。建立Member的資料表遷移和模型:bashphpartisanmake:migrationcreatememberstablephpartisanmake:modelMemberMember的遷移:phpSchema::create'members',functionBlueprint$table{$tableid;$tablestring'name';$tablestring'email'unique;$tablestring'password';$tabletimestamps;};Member模型:phpclassMemberextendsModel{protected$fillable'name','email','password'];publicfunctionorders{return$thishasManyOrder::class;}}第四步:建立Order和OrderDetail最後,我們需要建立訂單系統來追蹤每次購物的詳細內容。首先,建立Order和OrderDetail的遷移和模型。bashphpartisanmake:migrationcreateorderstablephpartisanmake:migrationcreateorderdetailstablephpartisanmake:modelOrderphpartisanmake:modelOrderDetailOrder的遷移文件:phpSchema::create'orders',functionBlueprint$table{$tableid;$tableforeignId'memberid'constrainedonDelete'cascade';$tabledecimal'totalprice',8,2;$tablestring'status'default'pending';$tabletimestamps;};OrderDetail的遷移文件:phpSchema::create'orderdetails',functionBlueprint$table{$tableid;$tableforeignId'orderid'constrainedonDelete'cascade';$tableforeignId'productid'constrainedonDelete'cascade';$tableinteger'quantity';$tabledecimal'price',8,2;$tabletimestamps;};Order模型:phpclassOrderextendsModel{protected$fillable'memberid','totalprice','status'];publicfunctionmember{return$thisbelongsToMember::class;}publicfunctionorderDetails{return$thishasManyOrderDetail::class;}}OrderDetail模型:phpclassOrderDetailextendsModel{protected$fillable'orderid','productid','quantity','price'];publicfunctionorder{return$thisbelongsToOrder::class;}publicfunctionproduct{return$thisbelongsToProduct::class;}}結論在這次的過程中,我們從頭開始建立了一個簡單的購物車系統。這包括設計資料庫結構、建立模型與資料表的遷移,以及如何處理它們之間的關聯。Laravel11提供了強大的ORM工具和Artisan命令,讓我們能夠快速且有效地建立這樣的系統。當然,這只是一個基本的架構,未來可以進一步添加如購物車邏輯、支付處理、訂單追蹤等功能,讓系統更完整。