Есть 3 роута:
1) /catalog/authors и метод контроллера который просто выводит список всех авторов из бд
2)/catalog/authors/{author} метод контроллера который выводит имя автора если я передаю его айди соответственно.
С этими 2мя я справился, но вот с 3им
3)/catalog/authors/{author}/{book} не получается Суть в том что я хочу вывести первую книгу заданного автора (одну книгу заданного автора )
Отношения между моделями соответственно:
Автор-Книга 1:М
методы books() и author() соответсвенно.
Маршрут вида /catalog/authors/1/1 Работает, НО на /catalog/authors/1/2 Он выдаёт точной такой же результат(тайтл книги к примеру, как и к /catalog/authors/1/1) Хотя 2ая книга автора вообще не задана в БД, постарался объяснить максимально понятно как смог.
Вообще не понимаю нужен ли тут какой то запрос в бд для данное проверки или нет.
Все доки русско и англоязычные уже изучил, но все равно не пойму в чем трабл. Роуты:
Route::get('/catalog/authors', 'AuthorsController@index');
Route::get('/catalog/authors/{author}', 'AuthorsController@show');
Route::get('/catalog/authors/{author}/{book}', 'AuthorsController@display');
Контроллер:
class AuthorsController extends Controller
{
public function index()
{
$authors = Author::all();
return view('author.index', compact('authors'));
}
public function show(Author $author)
{
return view('author.show', compact('author'));
}
public function display(Author $author, Book $book)
{
return view('author.books', compact('book', 'author'));
}
}
Проблемный вью:
@foreach($author->books as $book)
{{$book->title}}
@endforeach
Модель Автор
class Author extends Model
{
public function books()
{
return $this->hasMany(Book::class);
}
}
Модель книга
class Book extends Model
{
public function author()
{
return $this->belongsTo(Author::class, 'author_id');
}
}
Попробуйте сделать следующие изменения:
В контролере:
public function display(Author $author, Book $book)
{
if (empty($book)) {
return 'Такой книги нет';
}
return view('author.books', compact('book', 'author'));
}
В вью:
{{$book->title}}
В последний параметр роута /catalog/authors/{author}/{book}
нужно передавать именно id книги (а не номер по порядку). Его можно получить так:
$bookId = $author->books()->first()->id;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ребят всем привет, столкнулся с проблемой подключения эквайринга от тиньков банка, а именно 2 версии, в документации у них висит 1 версия через...
Возможно ли в PHP работать с тегом <tabel> также как и с тегом <form>? То есть делать формы регистрации, менять значения в БД и тд