Laravel Создание отношений при обновлении - PullRequest
0 голосов
/ 18 мая 2018

У меня есть система управления библиотекой с моделью 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

1 Ответ

0 голосов
/ 18 мая 2018
$student = Student::where('roll_no','=',$roll)->first();
$book = Book::where('book_id','=',$bookno)->first();

изменить так, надеюсь, это будет работать.

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