У меня есть система управления библиотекой с моделью Student и Book.Структура таблиц:
Таблица учеников
id | roll_no | name | created_at | updated_at
Таблица книг
book_id | name | author | publication | student_id | created_at | updated_at
Здесь boook_id
- первичный ключ
.соотношение выглядит следующим образом:
В модели книги
public function student()
{
return $this->belongsTo('App\Student');
}
В модели студента
public function books()
{
return $this->hasMany('App\Book');
}
Первоначально student_id
в таблице книг составляет null
.Всякий раз, когда должна быть выпущена книга, предоставляется book number
и студент roll number
, а поле student_id
в таблице книг обновляется на id
студента, которому она выдана.
В контроллере у меня есть следующий код
public function postIssue(Request $request)
{
$this->validate($request, [
'rollno' => 'required|min:7',
'bookno' => 'required|numeric',
]);
$roll = $request->input('rollno');
$bookno = $request->input('bookno');
$student = Student::where('roll_no','=',$roll);
$book = Book::where('book_id','=',$bookno);
$book->student_id = $student->id;
$book->save();
return view('book.issue')->with('msg','Book Issued');
}
Когда я запускаю эти коды, я получаю сообщение об ошибке: 1031 * "Undefined property: Illuminate\Database\Eloquent\Builder::$id"
Что не так?
Есть ли лучший способ сделать это?
Я использую Laravel 5.6