2017-12-05 1 views
0
내가 Crinsane/LaravelShoppingcart 패키지를 사용하고

와 데이터베이스에서 카트 데이터를 복원 할 수 없습니다 그리고 난 내가 그것을 마이그레이션 할 때 shoppingCart가의 tabel에 약간의 편집을 만들어 편집이내가 Crinsane/LaravelShoppingcart

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'); 
    }); 

와 같은 추가 가게 방법이

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'); 
} 

같은 장바구니 클래스 ($ ID와 $ 주소를 저장하는 두 pramaters 추가) 모든 데이터베이스에 아주 잘 작동하지만 난 방법을 복원하여 데이터베이스에서 데이터를 복원 할 때 문제는 단 하나의 매개 변수 ($ 식별자)로 복구하기 giv 내게 아무것도 안하고 내가 언제 dd (Cart :: restore (Auth :: user() -> id)) "null"이 문제를 해결하도록 도와주세요.

답변

0

store 메소드를 수락하도록 수정했습니다 $userId,하지만 restore 메서드가 작동하지 않는다고 말하는 것입니다. 사용자가 사용자 ID를 전달 했으므로 을 $userId을 수락하도록 수정하여이 특정 문제를 해결할 수 있지만 shoppingcart 데이터베이스의 idenfitier 열에 대해 확인하고 있습니다.

그러나 이것은 여전히 ​​좋은 생각입니다. 타사 패키지는 다음 composer update으로 덮어 쓰게되므로 수정하지 마십시오.

더 좋은 해결책은 $identifer을 사용하여 Auth::user()->id을 저장하는 것입니다. 사용자 당 여러 대의 카트를 보관해야하는 경우이 패키지의 위시리스트 기능을 사용할 수 있습니다. 마지막 수단으로 ID와 식별자를 연결하면됩니다. 'firstcart'+userId'secondcart'+userId.