Попытка получить записи из базы данных и передать контроллеру - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь отправить уведомление после того, как второй пользователь сделал ставку в игре, пользователю, который сделал первую ставку в игре.

У меня есть таблица game_bids, где у меня есть id, user_id и game_id. Я попытался найти game_id из таблицы, равной открытой в данный момент игре.

Я не очень хорош в laravel и не могу понять, как заставить его работать правильно. Мне нужна помощь с $ user = (который я передам, чтобы уведомить).

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use App\Game_bid;
use App\Game;
use Auth;
use Illuminate\Support\Facades\Lang;
use DB;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Notification;
use App\Notifications\GameBiddedNotification;


class PointsController extends Controller {
public function bid($game_id) {
        $bid = new Game_bid;
        $bid->game_id = $game_id;
        $bid->user_id = Auth::user()->id;
        $bid->is_awarded = 0;

        if ($bid->save()) {
            $game = Game::find($game_id);
            $user = User::find(Auth::user()->id);
            $user->points = $user->points - $game->points;
            $user->save();
        }

        **$user = Game_bid::where('user_id')
                ->where('game_id', Game::find($game_id))
                ->first();**

        $details = [
                'greeting' => $game->title,
                'body' => '.',
                'thanks' => '!',
        ];

        $user->notify(new \App\Notifications\GameBiddedNotification($details));

        return redirect('my_bids')->with('success', 'Your bid placed successfully');
    }

1 Ответ

1 голос
/ 12 апреля 2020

Если я правильно понимаю, это может быть несколько пользователей для уведомления (все, кто сделал ставку на эту игру). Таким образом, чтобы найти и уведомить всех других пользователей, которые делали ставки на эту игру, вы можете сделать что-то вроде этого:

public function bid($game_id) {
    $bid = new Game_bid;
    $bid->game_id = $game_id;
    $bid->user_id = Auth::user()->id;
    $bid->is_awarded = 0;

    if ($bid->save()) {
        $game = Game::find($game_id);
        $user = User::find(Auth::user()->id);
        $user->points = $user->points - $game->points;
        $user->save();
    }

    $users = User::whereHas('game_bids', function ($query) use ($game_id, $bid) {
        $query->where('game_id', $game_id)->where('user_id', '!=', $bid->user_id);
    })->get();

    $details = [
        'greeting' => $game->title,
        'body' => '.',
        'thanks' => '!',
    ];

    foreach ($users as $user) {
        $user->notify(new \App\Notifications\GameBiddedNotification($details));
    }

    return redirect('my_bids')->with('success', 'Your bid placed successfully');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...