在Laravel中插入空字符串或空图像 [英] Inserting Empty String or Null Images in Laravel
问题描述
我无法在数据库中插入字符串或null值,从而导致以下错误:
I can't insert a string or a null value in the database resulting in the following error:
SQLSTATE [HY000]:常规错误:1364字段"paxsafety_video" 没有默认值(SQL:插入
pax_safeties
(paxsafety_image
,updated_at
,created_at
)值 (Desert_1543390457.jpg,2018-11-28 15:34:17,2018-11-28 15:34:17))
SQLSTATE[HY000]: General error: 1364 Field 'paxsafety_video' doesn't have a default value (SQL: insert into
pax_safeties
(paxsafety_image
,updated_at
,created_at
) values (Desert_1543390457.jpg, 2018-11-28 15:34:17, 2018-11-28 15:34:17))
控制器
$this->validate($request, [
'paxsafety_image.*' => 'nullable|image|mimes:jpeg,jpg,png',
'paxsafety_video.*' => 'nullable|mimes:mp4,mov,ogg | max:20000'
]);
$paxSafety = [];
$paxSafetyVideo = [];
if ($request->has('paxsafety_image') && $request->has('paxsafety_video'))
{
//Handle File Upload
foreach ($request->file('paxsafety_image') as $key => $file)
{
// Get FileName
$filenameWithExt = $file->getClientOriginalName();
//Get just filename
$filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
//Get just extension
$extension = $file->getClientOriginalExtension();
//Filename to Store
$fileNameToStore = $filename.'_'.time().'.'.$extension;
//Upload Image
$path = $file->storeAs('public/paxsafety_folder',$fileNameToStore);
array_push($paxSafety, $fileNameToStore);
}
foreach ($request->file('paxsafety_video') as $key => $file)
{
// Get FileName
$filenameWithExt2 = $file->getClientOriginalName();
//Get just filename
$filename = pathinfo( $filenameWithExt2, PATHINFO_FILENAME);
//Get just extension
$extension2 = $file->getClientOriginalExtension();
//Filename to Store
$fileNameToStore2 = $filename.'_'.time().'.'.$extension2;
//Upload Image
$path = $file->storeAs('public/paxsafety_folder',$fileNameToStore2);
array_push($paxSafetyVideo, $fileNameToStore2);
}
$fileNameToStore = serialize($paxSafety);
$fileNameToStore2 = serialize($paxSafetyVideo);
}
else
{
$paxSafety[]='noimage.jpg';
$paxSafetyVideo[]='noimage.jpg';
}
foreach ($paxSafety as $key => $value) {
$paxSafetyContent = new PaxSafety;
$paxSafetyContent->paxsafety_image = !empty($value) ? $value : '';
foreach ($paxSafetyVideo as $key => $values) {
$paxSafetyContent->paxsafety_video = !empty($values) ? $values : '';
}
$paxSafetyContent->save();
}
推荐答案
尝试一下.
$paxSafetyContent = new PaxSafety;
$paxSafetyContent->paxsafety_image = !empty($paxSafety) ? $paxSafetyVideo : '';
$paxSafetyContent->paxsafety_video = !empty($paxSafetyVideo) ? $paxSafetyVideo : '';
$paxSafetyContent->save();
在PaxSafety中添加以下内容:
In the PaxSafety add the following:
protected $casts = [
'paxsafety_image' => 'array',
'paxsafety_video' => ' array'
];
还要确保两者都在模型的$ fillable区域中.
Also make sure both are in the $fillable ariae in the model.
这将使您可以将图像和视频URL作为数组保存在数据库中.
This will allow you to save the image and video URLs as an array in the DB.
希望这会有所帮助.
这篇关于在Laravel中插入空字符串或空图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!