我正在使用Laravel 5.以逗号分隔的值返回以下类别的用户输入。商业,家居维修,地板。
// Insert tile tags
$data = array();
$tag_title = $request->tag_title;
$data = explode(',', $tag_title);
foreach($data as $newTag) {
$tag = new Tag;
$tag->tag_title = $newTag;
$tag->save();
}
问题是,第二类 home-repair 已经存在于表中,该表必须是唯一的,并且会导致明显的约束,从而阻止后面的任何代码失败。
我如何首先测试是否采用了这些类别/标签,然后返回给用户添加新标签时采取的?
或者,在我看来,更好的方法是检查记录并仅插入表中尚不存在的新记录。看起来很清洁。这可以在Laravel中实现吗?
答案 0 :(得分:2)
您可能可以使用firstOrCreate ...
foreach($data as $newTag) {
$temp = Tag::firstOrCreate(array('tag_title'=>$newTag));
}
...所以如果一个标签没有tag_title,那么它就会被创建。