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' );
}