多对多关系,多输入

时间:2018-01-29 17:52:19

标签: laravel tags many-to-many

我花了最后几个小时才找到解决方案,但没有找到任何解决方案。我使用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'));
}

0 个答案:

没有答案