【发布时间】:2021-05-30 21:32:30
【问题描述】:
我正在使用 Laravel 8 开发我的论坛项目。
所以我创建了一个名为tags 的表格,其中包含一些主题标签,另一个是questions,其中包含论坛上提出的一些问题。
我还创建了另一个名为 tag_question 的表,显示每个 question_id 正在使用哪个 tag_id,如下图所示:
所以为了建立这种关系,我将其添加到模型Tag:
public function questions()
{
return $this->belongsToMany(Question::class);
}
还有这个给模特Question:
public function tags()
{
return $this->belongsToMany(Tag::class);
}
现在为了插入带有自定义标签的问题,我添加了这个方法:
public function postForm()
{
$validate_data = Validator::make(request()->all(),[
'title' => 'required',
'body' => 'required',
'private' => 'nullable',
'category' => 'required',
'tags' => 'array|required',
])->validated();
$question = Question::create($validate_data);
$question->tags()->sync(request('tags'));
return redirect()->back();
}
request('tags') 正在从刀片上的此选择选项中获取:
<label for="topic" class="BKoodakBold">Tags:</label>
<select class="form-control BSinaBold" name="tags[]" id="skills" multiple>
@foreach(\App\Models\Tag::all() as $tag)
<option value="{{ $tag->id }}">{{ $tag->name }}</option>
@endforeach
</select>
现在的问题是,每当我尝试插入新问题时,都会出现此错误:
照亮\数据库\查询异常 **SQLSTATE[42S02]:未找到基表或视图:1146 表 'dbname.question_tag' 不存在
那么这里出了什么问题?为什么我会收到此问题以及如何解决?
如果您对此有任何想法或建议,我将不胜感激...
【问题讨论】: