私は、人々が先生と時間を予約できるWebアプリケーションを構築しています。現時点では、時間がユーザカートに追加されると、誰もこの時間が利用可能であるか、カートに追加することはできません。Laravel 5.2のキューに入れられたジョブからセッションデータにアクセスしようとしています。
私はdarryldecode's shopping cartを使用していますが、セッションが持続する間(2時間)アイテムが保存されています。ただし、追加してから5分後にアイテムが自動的に削除されるようにしたいと思います。これを達成するために、私は5分の遅れで待ち行列に入れられた仕事をセットアップしました。
私の問題は、ジョブが5分後にもう一度他のユーザーに見えるように時刻を変更しますが、カートのデータが保存されているセッションにアクセスできないと思われるためカートから削除しません。誰かが、キューに入れられたジョブからセッションに保存されているカートデータにどのようにアクセスするのかアドバイスできますか?おかげさまで
これは、すべてがカートを除いて動作しますが、仕事のためのコードである::削除()
namespace App\Jobs;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\TimeSlot;
use Cart;
class RemoveTimeSlotFromCart extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public $timeSlot;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(TimeSlot $timeSlot)
{
$this->timeSlot = $timeSlot;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$timeSlot = $this->timeSlot;
if ($timeSlot->booked == 0 && $timeSlot->in_basket == 1) {
$timeSlot->in_basket = 0;
$timeSlot->save();
Cart::remove($timeSlot->id);
}
}
}
:更新次に、溶液を次のようになります。これは、すべてあなたの待ち行列に入れられた仕事によって処理される必要があります - あなたは現在どのようにデータベースからそれをクリアーしているのですか? –
「開かれた予約」の意味がわからない、ごめんなさい。現在、カートに時間が追加されると、データベース内で 'in_cart'の値が1に設定され、待機中のジョブによって5分後に自動的に0に戻されます。問題は、仕事にアクセスすることができないように見えるため、職場内からカートファサードを使用できないということです。おそらくそれはできますし、私は何か間違っていますか? – jgjr
あなたの仕事のコードを共有できますか? –