#購物車與會員功能的整合

1.購物車加上對應的user

php artisan make:migration add_user_id_to_carts

2.添上user_id.這邊使用foriegn Key的性質,利用constrained綁定table,然後排在id之後

public function up()
    {
        Schema::table('carts', function (Blueprint $table) {
            $table->foreignId('user_id')->constrained('users')->after('id');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('carts', function (Blueprint $table) {
            $table->dropConstrainedForeignId('user_id');
        });
    }

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0d195b7e-f280-496f-9047-2141421956ac/1628236858104.jpg

3.當設定好跑migrate欄位的時候再Carts的table(user_id)他會自動補上一個數字的零,但因為user註冊成功時他的ID代入1,所以我們必須要先將table(users)的第一筆資料改為零

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4b43ace6-13e4-4c71-9f4e-8af6e1cea192/1628236977838.jpg

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24d51f1b-8773-4bdf-ac01-398ca1beaef9/1628236990352.jpg

4.接著跑migrate

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f6e646b3-31ab-4d16-bf98-6f623ad92993/1628237205171.jpg

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0d6e5b7b-9d0d-4a3f-9a4a-b7e5ccd23316/1628237240598.jpg

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e1b5bdf6-f81f-4a8e-866a-823087aacc78/1628237278006.jpg

4.接著回到Models/Cart去製作我們的商業邏輯,增加$guarded

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bd147df9-2c97-4766-ad10-4fd78659dbb7/1628237447794.jpg

5.設定路由,將cart and cartItem都必須經過我們AuthAPI,必須都要經過Token的檢查

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/af9aab55-3aac-40a8-9be3-00fe1d449fa6/1628237607837.jpg

6.接著到CartController修改函式,透過$user = Auth()→user();根據這個函式可以拿到通過驗證的USER資料

邏輯判斷,如果沒有這個會員的購物車則執行增加,如果有這個會員資料則回傳他的購物車

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7185d62b-f36b-4356-88e7-3f45132ab017/1628237993907.jpg