亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 DarrylDecode 購物車功能將我的購物車數據存儲到 Laravel 中的數據庫

如何使用 DarrylDecode 購物車功能將我的購物車數據存儲到 Laravel 中的數據庫

PHP
不負相思意 2022-12-30 17:18:57
我試圖通過制作一個小型電子商務網站項目和實現購物車功能來學習 Laravel,我遇到了 DarrylDecode 購物車功能(https://github.com/darryldecode/laravelshoppingcart)但很快我意識到用戶的購物車數據存儲在會話中,每當用戶注銷并再次登錄時,購物車數據就會丟失。用戶也無法從其他瀏覽器或其他設備訪問購物車項目,因為它臨時保存在特定瀏覽器的會話中。我想將相同的數據存儲到數據庫中并從那里訪問它。關于將數據存儲在數據庫中的文檔解釋中幾乎沒有關于此的內容,但還不是很清楚。誰能告訴我如何實現這一目標
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

Darryldecode 購物車是一種在您的項目中實現購物車功能的雙向方法。在我的例子中,我正在嘗試對心愿單使用持久存儲,這樣當用戶登錄時,他們仍然會看到他們的心愿單項目。首先要做的是通過運行命令創建遷移


php artisan make:migration create_wishlist_storage_table

這將在 database/migration 目錄中創建遷移文件,打開文件,并用這些代碼行替換整個代碼塊。


<?php


use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;


class CreateWishlistStorageTable extends Migration

{

/**

 * Run the migrations.

 *

 * @return void

 */

 public function up()

{

    Schema::create('wishlist_storage', function (Blueprint $table) {

        $table->string('id')->index();

        $table->longText('wishlist_data');

        $table->timestamps();

        $table->primary('id');

    });

}


/**

 * Reverse the migrations.

 *

 * @return void

 */

public function down()

{

    Schema::dropIfExists('wishlist_storage');

}

}

之后,運行php artisan migrate命令。這將在您的數據庫中創建一個 wishlist_storage 表,其中包含列 id、wishlist_data 和時間戳。接下來是創建一個雄辯的模型來通過運行命令來處理我們的遷移php artisan make:model DatabaseStorageModel。打開應用程序目錄中的 DatabaseStorageModel.php 文件,并將整個代碼塊替換為以下代碼行。


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class DatabaseStorageModel extends Model

{

//

/**

 * Override eloquent default table

 * @var string

 */

protected $table = 'wishlist_storage';


/**

 * The attributes that are mass assignable.

 *

 * @var array

 */

protected $fillable = [

    'id', 'wishlist_data',

];



/**

 * Mutator for wishlist_column

 * @param $value

 */

public function setWishlistDataAttribute($value)

{

    $this->attributes['wishlist_data'] = serialize($value);

}



/**

 * Accessor for wishlist_column

 * @param $value

 * @return mixed

 */

public function getWishlistDataAttribute($value)

{

    return unserialize($value);

}


}

接下來要做的是創建一個新類以注入我們的購物車實例。為此,使用您的應用命名空間創建一個名為 DatabaseStorage.php 的文件并粘貼這行代碼。


<?php

namespace App;


use Darryldecode\Cart\CartCollection;


class DatabaseStorage {


public function has($key)

{

    return DatabaseStorageModel::find($key);

}



public function get($key)

{

    if($this->has($key))

    {

        return new CartCollection(DatabaseStorageModel::find($key)->wishlist_data);

    }

    else

    {

        return [];

    }

}



public function put($key, $value)

{

    if($row = DatabaseStorageModel::find($key))

    {

        // update

        $row->wishlist_data = $value;

        $row->save();

    }

    else

    {

        DatabaseStorageModel::create([

            'id' => $key,

            'wishlist_data' => $value

        ]);

    }

}



}

這取決于您命名文件和類的方式,但我正在解釋我是如何做到的。最后一步是使 DatabaseStorage 類成為我們購物車的默認存儲。運行命令


php artisan vendor:publish --provider="Darryldecode\Cart\CartServiceProvider" --tag="config"

在config目錄下發布庫配置文件名shopping_cart.php。打開 shopping_cart.php 文件并替換


'storage'=>null,


'storage' => \App\DatabaseStorage::class,

您現在可以按照正常程序在控制器中使用手推車。


查看完整回答
反對 回復 2022-12-30
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

當我使用它時,我發現購物車現在對所有人公開。如果一個用戶刪除了該項目,則該項目將被完全從購物車中刪除,而擁有相同項目的其他用戶則看不到這一點。



查看完整回答
反對 回復 2022-12-30
  • 2 回答
  • 0 關注
  • 162 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號