| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- <?php
 
- // php artisan make:controller BookController
 
- // app/Http/Controllers/BookController.php
 
- namespace 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");
 
- 	}
 
- }
 
 
  |