註冊新的帳號
登入
複製token放到
再按一次 send 顯示不同
購物車加上資料
加入token
回到
登出
用terminal增加php artisan make:migration create_orders_and_order_items
修改程式碼:
往下
terminal執行php artisan migrate
Models資料夾裡面新增檔案
複製其他檔案貼上修改
再新增檔案
修改Product程式碼
修改Cart 程式碼
在terminal下指令檢查 php artisan tinker
做結帳下指令php artisan make:migration add_checked_to_carts
修改程式碼
下指令跑起來: php artisan migrate
修改 Cart程式碼
下指令測試php artisan tinker
再修改 Cart程式碼
修改 CartController 程式碼:
修改 User程式碼:
修改 CartController 程式碼:
Terminal下指令測試php artisan tinker
修改路由:
如果有,但 orders 表仍然不存在,說明遷移未執行,你可以強制重新遷移:
php artisan migrate:refresh
資料表看
有到localhost:8000/carts/checkout
資料表就會註記從0變1
結帳只能到這裡(已提問)
加入$order->orderItems;
就有了
顯示
修改CartController程式碼只顯示未結帳的
加入VIP價格
在terminal打 執行php artisan migrate
修改Cart 程式碼
下面加入判斷
再改price的部分
價格20
Level2的結帳是16
顯示
做數量的檢查
引入套件:
修改CartItemController 程式碼
修改 Product程式碼
修改CartItemController程式碼
看資料表products數量
POSTMAN測試
放在購物車很久才結帳
修改Cart 程式碼
修改前程式碼:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Cart extends Model
{
use HasFactory;
protected $guarded = [''];
private $rate = 1;
public function cartItems()
{
return $this->hasMany(CartItem::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function order()
{
return $this->hasOne(Order::class);
}
public function checkout()
{
$order = $this->order()->create([
'user_id' => $this->user_id,
]);
if($this->user->level == 2){
$this->rate = 0.8;
}
foreach ($this->cartItems as $cartItem) {
$order->orderItems()->create([
'product_id' => $cartItem->product_id,
'price' => $cartItem->product->price * $this->rate
]);
}
$this->update(['checkouted' => true]);
$order->orderItems;
return $order;
}
}
修改後Cart程式碼:
修改Product 程式碼 加上protected $guarded =[''];表示欄位都可以被更新
有結帳資料庫的數量會變少:修改後Cart程式碼:
POSTMAN測試
顯示
資料庫數量真的有變少
大家明天見~