Laravel迁移中如何设置EU格式(hh:mm)的时间输入字段?
解决Laravel迁移中EU格式时间字段的设置问题
嘿,我看到你在Laravel迁移里设置EU格式(HH:mm)的时间字段时踩坑了,咱们来把问题捋清楚并解决它~
首先得指出你当前代码里的明显错误:
- 语法错误:
$table->date("h,i"('beginn'));这行写法完全不对,"h,i"('beginn')是无效的PHP语法,根本没法被解析 - 类型错误:
date字段类型是用来存储年月日的,不是你需要的时分格式时间
正确的实现方案
如果你需要存储的是欧洲常用的24小时制时分格式(比如12:00、21:34),Laravel的Schema Builder提供了time字段类型,它对应数据库中的TIME类型,正好用来存储时分秒(如果只需要时分,存储时可以补全秒为00,或者在业务逻辑里处理)。
修正后的迁移代码如下:
Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->string('arena'); $table->time('beginn'); // 使用time类型存储时分格式的时间 $table->timestamps(); });
额外验证建议
为了确保前端输入的是符合要求的HH:mm格式,你还可以在Laravel的请求验证里添加规则:
public function rules() { return [ 'beginn' => 'required|date_format:H:i', // H代表24小时制的小时,i代表分钟 ]; }
同时前端也可以使用<input type="time">控件,它会自动弹出符合系统时间格式的选择器,进一步降低输入错误的概率。
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

