如何插入Laravel?

How to insert in Laravel?

将数据插入 table Product:

后,我有输出对象 $product
$product = Product::create($data);

在模型 Product 中我有:

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

我尝试将图像添加到 table product_images:

$product->images()->save(new ProductImage(UploadFiles::$files));

table之间的关系是product.id = product_images

所以,插入后我收到消息:

General error: 1364 Field 'image' doesn't have a default value (SQL: insert into `product_images` (`product_id`) values (21))

好的,首先让我们来处理保存一张图片:

假设您有一个 product_images table 和 idimageproduct_id,您将附上这样的图像:

$image = new ProductImage(['image' => 'myImage.jpg']);
$product->images()->save($image);

现在看起来你有一个数组,所以你不能直接保存它,你需要把它放在一个for循环中。我不知道你的 UploadFiles::$files 的格式,但我假设它只是要保存的文件名列表:

$files = UploadFiles::$files;

foreach($files as $file){
  $image = new ProductImage(['image' => $file]);
  $product->images()->save($image);
}

或者,您可以将整个事物创建为数组并使用 saveMany,这样会更好:

$files = UploadFiles::$files;
$productImages = [];

foreach($files as $image){
  $productImages[] = new ProductImage(['image' => $image]);
}

$product->images()->saveMany($productImages);