我有两个模型(Post和Tag),我需要在Post上附加多个标签。单个标签附加可以正常工作,但是我很难将其设置为多个。
模型(发布):
public function tags()
{
return $this->hasMany('App\Models\Tag', 'id', 'tag_id');
}
控制器(发布):
public function store()
{
...
$posts->tag_id = $data['tag_id'];
...
}
刀片(创建后表格):
<select name="tag_id">
@foreach($tags as $tag)
<option value="{{ $tag->id }}">{{ $tag->title }}</option>
@endforeach
</select>
如何将多个标签保存为关系?
答案 0 :(得分:0)
->首先,您需要使select使用多个选项,例如:
>>> import numpy as np
>>> a = np.array([0, 1, 2, 3])
>>> t = np.array([1, 2, 3])
>>> res1 = t * a[:, None]
>>> res1
array([[0, 0, 0],
[1, 2, 3],
[2, 4, 6],
[3, 6, 9]])
,请注意,我将其命名为选择 tagIDs [] ,因此它将选择的值作为数组发送。
->其次,我假设帖子和标签之间的关系是ManyToMany。因此,您有一个数据透视表 post_tag ,其中具有列 post_id 和 tag_id 。
在您的帖子控制器中:
<select name="tagIDs[]" multiple>
@foreach($tags as $tag)
<option value="{{ $tag->id }}">{{ $tag->title }}</option>
@endforeach
</select>
同步的作用是将您在请求中发送的标签ID同步到帖子(也可以在更新帖子中使用)