如何插入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 和 id
、image
、product_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);
将数据插入 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 和 id
、image
、product_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);