我以前是在多个下拉列表中选择标签的,但我将其更改为一个文本字段,可以在其中手动输入多个标签。然后,我只调用一个firstOrCreate
方法,然后就想将它们sync()
应用于我的模型,但是我不知道该怎么做。到目前为止,我的代码:
// Here I simply create my new model
$expense = auth()->user()->expenses()->create($request->all());
$tags = [];
// For each entered tag I grab it from the database or I create it
foreach(explode(",", $request->tags) as $tag)
{
$tags[] = auth()->user()->tags()->firstOrCreate(['name' => $tag]);
}
// Here is what I used to do, but I had an array of tag_ids
$expense->tags()->sync($tags);
不确定下一步要做什么,也是我第一次使用firstOrCreate
,因此,关于如何改进上述代码的任何指针也许也将非常受欢迎。但是,当然,我的主要问题是,如何将标签对象同步到我新创建的费用上?
答案 0 :(得分:0)
实际上非常简单,只需添加->value('id')
:
$tags[] = auth()->user()->tags()->firstOrCreate(['name' => $tag])->value('id');