拉拉维尔:尝试将可选值"图像"插入服务器



我对Laravel很陌生,并且正在创建一个社交媒体网站,作为用户更新其状态的实践,例如Facebook的事情,但我遇到的问题是,并非每个帖子都应该附有图像。

因此,当我发送没有图像的帖子时,它会给我此错误:

SQLSTATE[23000]:完整性约束冲突:1048 列"image"不能为空(SQL:插入stories(bodyimageuser_idupdated_atcreated_at)值(My anme os Ololade, , 2, 2, 2017-12-14 14:00:08, 2017-12-14 14:00:08))

这表明图像没有值。但是,我更新了迁移文件并使图像可空,如下所示: $table->二进制('图像')->可为空(); 它可以工作并且图像上传成为可选的,但是在检查我的sql数据库时,每当我上传图像时,我都看不到blob文件,因为图像列下的所有值都是空的。

请问有没有办法覆盖拉拉维尔给我的这个错误?也就是说:如果没有图像,它应该继续更新状态,或者如果我可以通过我的控制器通过验证不需要图像数据。

这是我的代码:

public function up()
{
Schema::create('stories', function (Blueprint $table) {
$table->increments('id');
$table->text('body');
$table->binary('image')->
$table->integer('user_id');
$table->timestamps();
});
}
//Migrations file


public function createStory(Request $request){
$image  = $request['image'];
$story = new Story();
$story->body = $request['body'];
$story->image = $image;
$request->user()->stories()->save($story);
return response()->json(['message' => 'Your Story has been posted']);
}
//The Function that creates a post

在 laravel 中获取请求图像文件,然后您将像 follwing 一样编码。

$image = $request->file("image");

我认为没有$image($request['图像'])。 等没有 POST 变量图像。

您可以在故事表中设置允许空的图像字段,如下所示。

更改表story更改imageimageBLOB 空值;

列"图像"不能为空 当您不从表单传递图像但每次都在查询中执行时,会出现问题。

要解决此问题,您可以允许数据库中的图像为NULL,或者您必须添加条件$request->hasFile仅在图像出现时才插入图像,如下所示:

$image  = $request['image'];
$story = new Story();
$story->body = $request['body'];
if($request->hasFile('image')){
$story->image = $image;
}
$story->save();

您的image列不断获得空值的原因应该是这一行:

$image = $request['image'];

您的$request['image']回报是什么?是字符串吗?还是文件?如果是后者,则应复制该文件并将其存储在某个地方,然后将path保存到image列中。

最新更新