你好,我想插入一个空值到我的数据库,但我不知道怎么做,这是给一个错误
如何插入一个空值来输入文本,并将其设置为空数据库,因为我这样做我有一个错误,因为数据库的行没有一个值。我怎样才能做到这一点而不出错。
这是我的错误
如您所见,我有一个foreach循环,因此插入1个输入文本值不会在数据库中返回任何内容。
sqlstate[23000]:完整性约束冲突:1048列“title”不能为null(sql:insert-into) awards
( title
, description
, awards_image
, updated_at
, created_at
)值(,a:0:{},2018-11-28 10:29:35,2018-11-28 10:29:35))
我的控制器
public function store(Request $request)
{
$this->validate($request, [
'title' => 'nullable',
'description' => 'nullable',
'awards_image.*' => 'image|nullable|max:1999'
]);
$awards = [];
if ($request->has('awards_image'))
{
//Handle File Upload
foreach ($request->file('awards_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/awards_images',$fileNameToStore);
array_push($awards, $fileNameToStore);
}
$fileNameToStore = serialize($awards);
}
else
{
$fileNameToStore='noimage.jpg';
}
foreach ($awards as $key => $values) {
$awardsContent = new Award;
$awardsContent->title = $request->title[$key];
$awardsContent->description = $request->description[$key];
$awardsContent->awards_image = $values;
$awardsContent->save();
}
}
2条答案
按热度按时间b91juud31#
进行新迁移
然后在创建的迁移中,首先删除列,然后重新创建列使其可为null。。
请注意此操作,因为您将丢失该列中的所有数据…也许您可以将标题的实际值复制到另一列,直到您进行更改。。。
p8h8hvxi2#
如果不想更改表,请尝试以下操作:
更多信息请点击
empty()
:http://php.net/manual/en/function.empty.php
如果您很乐意更改表,那么可以创建一个迁移,它位于up中
当然,你必须把它改成你已经拥有的东西,但重要的是
->nullable()->change();
行的其余部分应该与初始迁移相同。有关迁移更改的详细信息:
https://laravel.com/docs/5.7/migrations#modifying-列
我希望这有帮助