2 回答

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,
您現在可以按照正常程序在控制器中使用手推車。
- 2 回答
- 0 關注
- 162 瀏覽
添加回答
舉報