我正在使用Crinsane / LaravelShoppingcart包,我在shoppingcart tabel上做了一些编辑,当我迁移它并添加这样的
Schema::create(config('cart.database.table'), function (Blueprint $table) {
$table->string('identifier');
$table->integer('userId')->unsigned();
$table->text('address');
$table->string('instance');
$table->longText('content');
// $table->nullableTimestamps();
$table->timestamps();
$table->primary(['identifier', 'instance']);
$table->foreign('userId')->references('id')->on('users')->onDelete('cascade');
});
并且还编辑了商店方法(添加了两个pramater来存储$ userId和$ address)在这个Cart类中
public function store($identifier, $address, $userId)
{
$content = $this->getContent();
if ($this->storedCartWithIdentifierExists($identifier)) {
throw new CartAlreadyStoredException("A cart with identifier {$identifier} was already stored.");
}
$this->getConnection()->table($this->getTableName())->insert([
'identifier' => $identifier,
'address' => $address,
'userId' => $userId,
'instance' => $this->currentInstance(),
'content' => serialize($content)
]);
$this->events->fire('cart.stored');
}
并且所有工作都在数据库中工作得非常好,但问题是当我使用还原方法从数据库恢复数据时只使用一个参数($ identifier)进行恢复时它没有给我任何东西,当我发现时(Cart :: restore(Auth) :: user() - > id))它给我“null”请帮我解决这个问题
答案 0 :(得分:0)
您已修改store
方法以接受$userId
,但您说restore
方法无法正常工作。您也可以通过修改restore
接受$userId
来修复此特定问题,因为您已将其用户ID传递给它,但它会根据idenfitier
列对其进行检查在shoppingcart
数据库中。
然而,这仍然是一个坏主意。您永远不应该修改第三方软件包,因为它会被下一个composer update
覆盖。
更好的解决方案是使用$identifer
来存储Auth::user()->id
。如果您需要为每个用户存储多个购物车,则可以使用此包的心愿单功能。作为最后的手段,您可以简单地将id与标识符连接起来,例如。 'firstcart'+userId
和'secondcart'+userId
。