Laravel首先或创建重复项

时间:2018-07-31 18:54:22

标签: php laravel

未能找到关于该答案的答案。我在Many-to-ManyExpense之间建立了Tag关系。我有一个简单的表单,可以在其中输入一些标签,并用逗号分隔。在我的store方法中,执行以下操作:

foreach(explode(",", $request->tags) as $tag)
{
    $tags[] = auth()->user()->tags()->firstOrCreate(['name' => $tag])->id;
}

这将创建不存在的标签,并返回tag_ids的数组,以便我可以将其与我的Expense同步。

$expense->tags()->sync($tags); // Note, $expense is also created in my store method, ofcourse

但是我的问题是,它正在创建重复项,我不知道为什么。不幸的是,网上找不到很多东西。

2 个答案:

答案 0 :(得分:0)

发现了问题。标签名称之前或之后似乎都有空格。因此,我需要在插入之前将其删除。

答案 1 :(得分:0)

这听起来像是设置迁移且未正确进行验证的错误。

1)在迁移过程中,您应该可以对其进行设置,以便仅在表中输入一次标签名称。

2)您应该检查或创建表单验证。现在,由于您正在选择或创建记录,这将有些麻烦,但是肯定可以实现。

在此旁边提供一些提示,请确保删除所有空格并将标签小写。这也将禁止两个相同的标签1具有大写字母,而另一个则完全小写。