如何插入一个空值来输入文本并将其设置为null到数据库,因为这样做,我出错了,因为数据库的行没有值。我该如何做到没有错误?
SQLSTATE [23000]:违反完整性约束:1048列“标题” 不能为null(SQL:插入
awards
(title
,description
,awards_image
,updated_at
,created_at
)值(,,a:0:{}, 2018-11-28 10:29:35,2018-11-28 10:29:35))
EDIT
<?php
foreach ($awards as $key => $values) {
$awardsContent = new Award;
$awardsContent->title = $request->title[$key];
$awardsContent->description = $request->description[$key];
$awardsContent->awards_image = $values;
$awardsContent->save();
}
控制器
public function store(Request $request)
{
$this->validate($request, [
'title' => 'nullable',
'description' => 'nullable',
'awards_image.*' => 'image|nullable|max:1999'
]);
$awards = [];
if ($request->has('awards_image')) {
foreach ($request->file('awards_image') as $key => $file) {
$filenameWithExt = $file->getClientOriginalName();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $file->getClientOriginalExtension();
$fileNameToStore = $filename . '_' . time() . '.' . $extension;
$path = $file->storeAs('public/awards_images', $fileNameToStore);
array_push($awards, $fileNameToStore);
}
$fileNameToStore = serialize($awards);
} else {
$fileNameToStore = 'noimage.jpg';
}
$awardsContent = new Award;
$awardsContent->title = $request->input('title');
$awardsContent->description = $request->input('description');
$awardsContent->awards_image = $fileNameToStore;
$awardsContent->save();
return redirect('/admin/airlineplus/awards')->with('success', 'Content Created');
}
答案 0 :(得分:0)
您必须像这样更改数据库迁移模式
$table->string('title')->nullable();
,然后以此刷新您的迁移,
php artisan migrate:refresh
答案 1 :(得分:0)
您的数据库当前不允许标题列为空。您可以将表中的该字段更改为可为空,或者如果请求中的值为空,则可以更新代码以使用空字符串。
$awardsContent->title = $request->filled('title') ? $request->get('title') : '';