Laravel Контроллер, если еще - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь заставить функцию «брать деньги у реферала» в контроллере, если условие выполнено. У меня есть виджет, который отображает сумму денег, заработанную рефералами, и кнопку «добавить в аккаунт» ниже. Мой код:

   if($ref_money < 320) {
        return [
            'msg'       => 'You need 320 coins on balance to take money',
             'type'      => 'error'
        ];
    } else {
        return [
        'title'       => 'You take '.$this->user->ref_money.' for refferals',
        'success' => true,
        ];
    }  

Если на моем балансе меньше 320 (как написано в условии), и я нажимаю кнопку «забрать», я получил ошибку You need 320 coins on balance to take money, но деньги добавляются к моему балансу в результате. Это почему? Ведь условие: если меньше 320, то не добавлять, а если больше, то добавлять.

РЕДАКТИРОВАТЬ:

Мой полный код функции :

public function ref_money()
{
    $userid = $this->user->id;
    $user = User::where('id', $userid)->first();
    $ref_money = $user->ref_money;

    User::where('id', $user->id)->update([
        'money' => $user->money + $ref_money,
        'ref_money' => $user->ref_money - $ref_money
    ]);

    if($ref_money == 0) {
        return [
            'msg'       => 'You don\'t money have refferals',
            'type'      => 'error'
        ];
    }

   if($ref_money < 320) {
        return [
            'msg'       => 'You need 320 coins on balance to take money',
             'type'      => 'error'
        ];
    } else {
        return [
        'title'       => 'You take '.$this->user->ref_money.' for refferals',
        'success' => true,
        ];
    }   
}

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Это должно работать для вас:

    public function ref_money()
{
    $userid = $this->user->id;
    $user = User::where('id', $userid)->first();
    $ref_money = $user->ref_money;

    if($ref_money == 0) {
        return [
            'msg'       => 'You don\'t money have refferals',
            'type'      => 'error'
        ];
    }

   if($ref_money < 320) {
        return [
            'msg'       => 'You need 320 coins on balance to take money',
             'type'      => 'error'
        ];
    } else {
  User::where('id', $user->id)->update([
        'money' => $user->money + $ref_money,
        'ref_money' => $user->ref_money - $ref_money
    ]);
        return [
        'title'       => 'You take '.$this->user->ref_money.' for refferals',
        'success' => true,
        ];
    }   
}
1 голос
/ 05 марта 2020

Попробуйте код ниже:

public function ref_money()
{
    $userid = $this->user->id;
    $user = User::where('id', $userid)->first();
    $ref_money = $user->ref_money;

    if($ref_money == 0) {
        return [
            'msg'       => 'You don\'t money have refferals',
            'type'      => 'error'
        ];
    }

   if($ref_money < 320) {
        return [
            'msg'       => 'You need 320 coins on balance to take money',
             'type'      => 'error'
        ];
    } else {

        User::where('id', $user->id)->update([
            'money' => $user->money + $ref_money,
            'ref_money' => $user->ref_money - $ref_money
        ]);

        return [
        'title'       => 'You take '.$this->user->ref_money.' for refferals',
        'success' => true,
        ];
    }   
}

Вы фактически обновляли деньги без какого-либо чека, на самом деле это нужно делать только в том случае, если ref_money равен или больше 320.

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