Laravel выбирает викторины, принадлежащие текущему пользователю

Matt Kent спросил: 03 февраля 2018 в 10:15 в: php

В настоящее время я работаю над приложением викторины в laravel 5.6 и пытаюсь получить все викторины, принадлежащие текущему аутентифицированному пользователю.

У меня есть три таблицы:

users quizzes

В таблице user_quizzes содержится вся информация, относящаяся к викторине, например:

 - id
 - quiz_name
 - quiz_description
 - active
 - total_plays
 - created_at
 - updated_at

Таблица пользователей - это только значение laravel с незначительными изменениями:

 - id
 - username
 - email
 - password
 - remember_token
 - created_at
 - updated_at

В таблице quizzes содержатся два поля (оба внешних ключа): user_quizzes и user_id.

В настоящий момент он выводит ВСЕ викторины, а не только те, которые принадлежат текущему пользователю.

В моем quiz_id у меня есть:

$quizzes = Quiz::find(Auth::user()->id)->with('user')->get();

И мой QuizController:

class Quiz extends Model
{
    protected $table = 'quizzes';    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }
}

Наконец, QuizModel содержит:

class User extends Authenticatable
{
    use Notifiable;    protected $fillable = [
        'username', 'email', 'password',
    ];    protected $hidden = [
        'password', 'remember_token',
    ];    public function activation()
    {
        return $this->hasOne('App\Models\Activation');
    }    public function profile()
    {
        return $this->hasOne('App\Models\Profile');
    }    public function quizzes()
    {
        return $this->hasMany('App\Models\Quiz');
    }
}

Я также попытался использовать UserModel с объединениями, но получил тот же результат (все викторины вернулись, а не только те, которые принадлежат текущему пользователю). Вот что я сделал для этого, только для справки:

$quizzes = DB::table('user_quizzes')
                        ->join('users', 'users.id', '=', 'user_quizzes.user_id')
                        ->join('quizzes', 'quizzes.id', '=', 'user_quizzes.quiz_id')
                        ->get();

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


0 ответов