| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | <?php// php artisan make:controller BookController// app/Http/Controllers/BookController.phpnamespace App\Http\Controllers;use Illuminate\Http\Request;// Фасад DB здесь не используется; здесь используется модельuse App\Models\Book;use App\Models\Author;class BookController extends Controller {	function index() {		$books = Book::all()->load("author"); // Достать все книги		return view("books", ["rows" => $books]);	}	function add() {		return view("add_book_form", ["authors" => Author::all()]);	}	function view(Book $book) {		return view("book", ["book" => $book->load(["author" => function($query) {}, "comments" => function($query) { $query->recent(); }])]);	}	function edit(Book $book) {		return view("edit_book_form", ["book" => $book]);	}	function store(Request $request) {		$request->validate([			"id" => "nullable|exists:books",			"name" => "required",			"annotation" => "nullable",			"pagecount" => "nullable|numeric",			"year" => "nullable|numeric",			"isbn" => "nullable",			"author" => "required|exists:authors,id"		], [			"name" => "Книга должна иметь название.",			"author" => "Книга должна иметь автора."		]);		$arr = $request;		$book = Book::find($arr->id) ?? new Book;		$book->name = $arr->name;		$book->annotation = $arr->annotation;		$book->pagecount = $arr->pagecount;		$book->year = $arr->year;		$book->isbn = $arr->isbn;		$book->author_id = $arr->author;		$book->save();		return view("success");	}	function comment(Book $book, Request $request) {		$request->validate([			"name" => "required",			"email" => "required|email",			"content" => "required"		], [			"name" => "Укажите ваше имя.",			"email" => "Укажите ваш email.",			"content" => "Введите комментарий."		]);		$arr = $request;		$book->comments()->create([			"name" => $arr->name,			"email" => $arr->email,			"content" => $arr->content		]);		return view("success");	}	function drop(Book $book) {		$book->comments()->delete();		$book->delete();		return view("success");	}}
 |