如何使用Laravel将随机默认图像插入数据库?

时间:2018-07-09 10:22:31

标签: php laravel laravel-5.2

我正在开发Laravel应用程序,它具有一个包含图像上载字段的表单,它也不是必填字段。现在我想做的是,如果有人提交表单而不上传图像,那么默认的随机图像将从public/images/default目录插入数据库。我如何使用Laravel做到这一点?我有该目录的10张图像(例如:1b.png,2b.png,3b.png ....)

<form method="POST" action="{{ route($base_route.'.eventEdit', ['event_id' => $event->event_code]) }}" accept-charset="UTF-8" id="general_form" novalidate="novalidate">
     <input name="name" type="text" value="something" class="name">
     <input name="name" type="file" value="DefaultImageName"  class="image">
     <button class="btn btn-default"> Submit </button>
</form>

2 个答案:

答案 0 :(得分:0)

将此代码添加到您的控制器操作中

$images = scandir(public_path('images/default'));
$image = $request->file('DefaultImageName', $images[mt_rand(0, count($images -1))]);

答案 1 :(得分:0)

我不建议将图像存储在数据库中。我通常采用的方法是,在数据库中存储名称,别名和文件路径。

您可以执行此操作,具体取决于您在应用程序上使用的模式,但是对于您的情况,我要做的是创建一个mutator,当某些字段为空时,只要您要插入一条记录,它都会进行验证,它会执行某些操作(如果您使用的是雄辩的话,那么我想)。

  

https://laravel.com/docs/5.2/eloquent-mutators

public function setImageAttribute($value)
{    
   if (empty($value)) {
    $this->attributes['image'] = //fetch your image and apply your logic
   } else { 
    $this->attributes['image'] = value;
   }

}

否则,我将创建一个formrequest来验证某个字段是否为空,然后在其中放置一些内容(这样,当到达插入代码时,它已经包含图像了)

  

https://laravel.com/docs/5.2/validation