Исключение в laravel 5.8: Попытка получить свойство необъекта при попытке редактировать данные - PullRequest
0 голосов
/ 13 февраля 2020

Недавно я начал с Laravel 5.8 и пытаюсь создать кнопку редактирования, которая обновит строку из базы данных. и когда нажимают кнопку редактирования, Laravel вызывает ошибку вроде этой

это мой контроллер:

    public function edit($id_book){
        $book = Books::find($id_book);
        return view('/books',['book'->$book]);
    }

    public function UploadEdit(Request $request){
        DB::table('books')->where('id_book',$request->id_book)->update([
            'judul' => $request->judul,
            'gambar' => $request->gambar,
            'kategori' => $request->kategori,
            'deskripsi' => $request->deskripsi,
            'ketersediaan' => $request->ketersediaan,
            'lokasi' => $request->lokasi
        ]);

        return redirect()->back();
    }

это мои модели:

    class Books extends Model
    {
        protected $table = "books";
        protected $primaryKey = "id_book";

       protected $fillable = [
           'judul',
           'gambar',
           'kategori',
           'deskripsi',
           'ketersediaan',
           'lokasi'
       ];
    }

Я пытался решить эту проблему с помощью функции редактирования изменения в контроллере: от этого

    public function edit($id_book){
        $book = Books::find($id_book);
        return view('/books',['book'->$book]);
    }

до этого

    public function edit($id_book){
        $book = Books::find($id_book);
        return view('/books',compact('book'));
    }

и этого:

    public function edit($id_book){
         $book = Books::find($id_book);
         return view('/books')->withBooks('$book');
    }

но это не работает

Ответы [ 6 ]

1 голос
/ 13 февраля 2020

Я думаю, что ошибка показывает id_book неправильно. Вы должны использовать метод findOrFail().

public function edit($id_book){
    $book = Books::findOrFail($id_book);
    return view('/books',compact('book'));
}
0 голосов
/ 13 февраля 2020

Попробуйте это

используйте findOrFail

public function edit ( $id_book ){
    $books = Books::findOrFail($id_book);
    return view('books',compact('books'));
}
0 голосов
/ 13 февраля 2020

Попробуйте это

public function edit($id_book) {
   $book = Book::find($id_book);

   return view('books.edit', compact('book'));
}
0 голосов
/ 13 февраля 2020

Попробуйте это:

 public function edit($id_book){
        $book = Books::where('id_book', $id_book)->first();
        return view('/books', compact('book'));
    }
0 голосов
/ 13 февраля 2020

Кажется, вы использовали -> вместо =>, чтобы присвоить значение

Изменить

return view('/books',['book'->$book]);

на

return view('/books',['book' => $book]);
0 голосов
/ 13 февраля 2020

Измените свою строку 58 (оператор возврата функции edit()) на:

return view('/books',compact('book'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...