Я работаю над своим первым laravel проектом, который является библиотечным приложением. Сейчас я работаю над формой для создания книги, и мне пришлось создать здесь много красноречивых отношений. Я создал отношения языков с книгами, что было легко, потому что одна книга может иметь только один язык (в данном случае), но один язык может использоваться для нескольких книг. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу иметь возможность выбирать жанры также в форме, поэтому я связал таблицу жанров со своей таблицей книг с отношением ownToMany и, конечно, я также создал сводную таблицу. Теперь я думаю, что проблема должна быть в функции хранилища моего BookController, но я просто не могу понять, что это такое.
Вот часть моего кода: (извините, если я что-то упустил я впервые задаю вопрос здесь)
Функция хранилища моего BookController:
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|max:255',
'author_id' => 'required',
'year' => 'required|numeric',
'publisher_id' => 'required',
'genres' => 'exists:genres,id',
'language_id' => 'required',
'isbn' => 'required|numeric',
'pages' => 'required|numeric',
]);
$book = Book::create($validatedData);
$book->genres()->attach(request('genre_id'));
return redirect('books')->with('success', 'Book was added!');
}
Если я отправляю свою форму прямо сейчас, я получаю это сообщение:
SQLSTATE [HY000 ]: Общая ошибка: 1364 Поле 'genre_id' не имеет значения по умолчанию (SQL: вставить в books
(title
, author_id
, year
, publisher_id
, language_id
, isbn
, pages
, updated_at
, created_at
) значения (Spani sh для кошек, 1, 1994, 1, 1, 1234567891128, 2337, 2020-02-17 16:37:07, 2020-02- 17 16:37:07)) my create.blade. php
<div class="form-group">
<label for="genre_id">Genre(s):</label>
@foreach($genres as $genre)
<input type="checkbox" name="genre_id[]" value="{{ $genre->id }}">{{ $genre->name }}
@endforeach
</select>
@error('genre_id')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
</div>
Значение жанров отображается в моей форме, но я не могу ввести их в свою базу данных.
Любая помощь будет принята с благодарностью!