我使用以下代码将多数组插入数据库:
foreach($request->category as $k => $v){
$category[] = array(
"category_id" => $v,
"announcement_id" => $announcement->id
);
}
AnnouncementCategory::insert($category);
因此,输入数据是POST数组$request->category
。
我需要重构这段代码
我试过这段代码:
$announcement->categories()->attach($request->category);
在模型Announcement
中,我有:
public function categories()
{
return $this->hasMany("App\AnnouncementCategory", "announcement_id", "id");
}
答案 0 :(得分:3)
如果您在Announcement
模型关系中定义如下:
public function categories()
{
return $this->belongsToMany(AnnouncementCategory::class);
}
你可以这样做:
$announcement->categories()->attach($request->category);
修改强>
我看到您更新了问题并添加了categories
关系。但是看一下你的代码,AnnounceCategory就是数据透视表,所以你应该使用belongsToMany
而不是hasMany
答案 1 :(得分:1)
如果请求与列匹配,您可以在一行中执行此操作:
AnnouncementCategory::insert($request->all());
然后在AnnouncementCategory
模型中,确保声明protected $fillable
数组,指定哪个字段可以填充。