【发布时间】:2020-02-17 16:59:23
【问题描述】:
我正在开发我的第一个 laravel 项目,这是一个库应用程序。 我现在正在制作一个表格来创建一本书,我必须在这里建立许多雄辩的关系。我创建了书籍的关系语言,这很容易,因为一本书只能有一种语言(在这种情况下),但一种语言可以用于多本书。 我现在面临的问题是,我希望能够在表单上选择流派,所以我将流派表与我的 book 表通过 belongsToMany 关系连接起来,当然我还创建了一个数据透视表。 现在,我认为问题出在我的 BookController 的 store 函数中,但我就是不知道是什么问题。
这是我的一些代码:(对不起,如果我遗漏了什么,这是我第一次在这里提问)
My 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,@987654328 @, isbn, pages, updated_at, created_at) 值(猫的西班牙语,1, 1994, 1, 1, 1234567891128, 2337, 2020-02-17 16:37:07, 2020-02 -17 16:37:07))
我的 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>
类型的值显示在我的表单中,但我似乎无法将它们输入到我的数据库中。
任何帮助将不胜感激!
【问题讨论】:
-
请将代码以纯文本形式发布在代码块中。见Markdown help
-
如果书籍 类型是多对多关系,那么您不应该在
books表中包含genre_id列。检查您的迁移脚本或数据库架构。
标签: mysql laravel eloquent laravel-6