我花了最后几个小时才找到解决方案,但没有找到任何解决方案。我使用Laravel并且在兴趣和用户之间以及兴趣和itags之间存在多对多的关系。
我的控制器有效,但标签未保存。我总是收到此错误消息:
SQLSTATE [42S02]:找不到基表或视图:1146表没有 存在(SQL:select * from
itag
where(itag
= test)limit 1)
标签只应保存在数据库中(如果尚未保存)。如果已存储xyz,则应将已保存的标记保存在感兴趣的关系中。 如何保存多个标签以及与兴趣的关系?
这是我的控制器:
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|min:3|max:15',
'itag' => 'required'
]);
$interest = new Interest();
$interest->name = $request->name;
$interest->save();
if($interest)
{
$itagNames = explode(',' ,$request->get('itag'));
$itagIds = [];
foreach($itagNames as $itagName)
{
//$interest->tags()->create(['itag'=>$tagName]);
//Or to take care of avoiding duplication of Tag
//you could substitute the above line as
$itag = Itag::firstOrCreate(['itag'=>$itagName]);
if($itag)
{
$itagIds[] = $itag->id;
}
}
$interest->itags()->sync($itagIds);
}
$user = Auth::user();
$interest->user()->sync($user);
return back()->with('success', lang::get('messages.newinterest'));
}