Как сделать эти красноречивые отношения в Laravel - PullRequest
0 голосов
/ 17 марта 2020

У меня есть таблица с именем users и столбцом username. Другая таблица называется студенты с кодом столбца. Я установил отношение hasMany в пользовательской модели, как показано ниже, и оно работает нормально.

public function students()
{
   return $this->hasMany(Student::class,'code','username');
}

У меня есть еще одна таблица, называемая институтами, где столбец похож на таблицу студентов с именем inst. Мне нужно показать данные из таблицы институтов при отображении данных пользователя. Как сделать это отношение?

таблица пользователей

имя пользователя | мобильный | адрес | пароль

таблица студентов

имя пользователя | имя | inst | roll | reg

таблица институтов

name | inst | address | phone

Это мой домашний контроллер

public function index()
{
     $admins = User::where('username','=',Auth::user()->username)->get();
     return view('home', compact('admins'));
}

И это мое мнение

@foreach($admins as $key => $admin)            
   @foreach($admin->students as $student)
      {{ $student->reg }}
   @endforeach
@endforeach

1 Ответ

0 голосов
/ 17 марта 2020
  1. Добавьте миграцию в таблицу учеников:

     $table->unsignedBigInteger('user_id')->nullable();
        $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('set null');
    
  2. Обновите свою модель Метод пользователя по ученикам:

    return $this->hasMany(Student::class);
    
  3. Добавить "с методом"

    $ admins = Пользователь :: где ('username', '=', Auth :: user () -> username) -> with ('студентов') - > get ();

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