Laravel插入一对多关系

时间:2017-04-21 14:52:27

标签: php mysql laravel eloquent

我有发布表和图片表,这些表有一对多关系。

  

发布模型代码

public function images()
    {
        return $this->hasMany('App\PostImage');
    }

我从用户那里获取3张图片,我想将它们插入带有帖子ID的图片表中。

  

例如

firstImage.jpg ,帖子ID 1

secondImage.jpg ,帖子ID 1

thirdImage.jpg ,帖子ID 1

  

问题是

如何在三列

中同时插入ID为1的三张图片
  

我尝试了什么

我已经制作了一个在表格中插入3次的for循环,但我知道这不是一个好习惯,这是代码。

for($x = 0; $x < 3; $x++) {
$image = new PostImage;
$image -> post_id   = $ad -> id;
$image -> image     = $images_name[$x];
$image -> save();
}

1 个答案:

答案 0 :(得分:1)

如果您只需要插入3张图像,这种方法没有任何问题。但是,如果要插入数百个图像,我建议您使用insert()方法,该方法只创建一个查询,而不是创建100个查询以插入100个图像:

$array = [];
foreach ($images_name as $name) {
    $array[] = ['post_id' => $ad->id, 'image' => $name];
}
PostImage::insert($array);