如何制作最短的代码?
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
我使用以下代码将多数组插入数据库:
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