如何制作最短的代码?

How to make shortest code?

我使用以下代码将多数组插入数据库:

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");
    }

如果请求与列匹配,您可以在一行中完成:

AnnouncementCategory::insert($request->all());

然后在您的 AnnouncementCategory 模型中,确保声明 protected $fillable 数组,您可以在其中指定可以填充的字段。

如果您在 Announcement 模型中这样定义关系:

public function categories() 
{
   return $this->belongsToMany(AnnouncementCategory::class);
}

你可以这样做:

$announcement->categories()->attach($request->category);

编辑

我看到你更新了你的问题并添加了 categories 关系。但是看看你的代码,AnnounceCategory 是相当重要的 table,所以你应该使用 belongsToMany 而不是 hasMany