Laravel 5.2: определен пользователь и получена информация из другой таблицы базы данных

Обновление Я решил проблему, я просто забыл get() Вот

$userDiplomas = UserDiploma::query()->where( 'user_id', Auth::user()->id );

но до сих пор не понял, почему я не смог использовать это

Auth::user()->diplomas as $diploma

Вот мой случай

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

Я сделал новый стол под названием user_diplomas и вот таблица миграции

$table->integer( 'user_id' )->unsigned();
$table->foreign( 'user_id' )->references( 'id' )->on( 'users' );
$table->integer( 'diploma_id' )->unsigned();
$table->foreign( 'diploma_id' )->references( 'id' )->on( 'diplomas' );

когда пользователь входит в систему и нажимает на регистр сейчас, он вставляет 2 значения в user_diplomas Таблица (user_id, diploma_id) это работает нормально.

теперь встает вопрос

Мне нужно, чтобы пользователь зарегистрировал дипломы и отобразил их в своем профиле, пожалуйста, посмотрите на User Модель и UserDiploma Модель.

Модель пользователя

public function diplomas() {
    return $this->hasMany( 'App\Models\UserDiploma', 'diploma_id' );
}

Модель UserDiploma

public function diplomaId() {
    return $this->belongsTo( 'App\Models\Diploma', 'diploma_id' );
}

сейчас пытаюсь получить дипломы я пытаюсь это

@foreach(Auth::user()->diplomas as $diploma)
....
..........
@endforeach

Но никаких результатов не выходит!

Я также пытаюсь сделать что-то подобное в HomeController

public function index() {
        $userDiplomas = UserDiploma::query()->where( 'user_id', Auth::user()->id );
        return view( 'trainees.profiles', compact('userDiplomas') );
}

но это тоже не сработало.

Любые идеи, пожалуйста, как заставить это работать.

1 ответ

Измените метод в модели "Пользователь" на

public function diplomas() {
    return $this->hasMany( 'App\Models\UserDiploma', 'diploma_id','diploma_id' );
}
Другие вопросы по тегам