Запретить пользователю иметь такое же количество из таблицы - PullRequest
0 голосов
/ 19 июня 2020

Я использую метод удачного розыгрыша, тогда как пользователи могут получить удачный розыгрыш только тогда, когда количество попыток достигнет определенных чисел. каждый раз пользователь пытается разыграть удачу. Я создал для этого простой способ.

public function canGetLuckyDraw()
{
    $gifts = Gift::count();

    Gift::create([
        'user_id' => auth()->id,
        'status' => false
    ]);

    if($gifts % 300 == 0)
    {
        $this->userGetTheLuckyDraw();
    }
}

Когда текущий пользователь делает 300 попыток. Тогда пользователь получит счастливый розыгрыш. Проблема в том, что я обнаружил, что если оба пользователя обращаются к методу canGetLuckyDraw () одновременно. Есть шанс, что количество подарков в таблице подарков будет таким же, и два или более пользователя получат счастливый розыгрыш.

Кто-нибудь знает, как лучше всего справиться с такой ситуацией? Я использовал очередь, но она довольно медленная, так как я вынужден использовать только 1 воркера, чтобы справиться с этим, чтобы счетчик был уникальным.

1 Ответ

1 голос
/ 19 июня 2020

Используйте предложение where и count. $gifts = Gift::where('user_id', auth()->id)->count();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...