如何将日期转换为laravel中的整数

时间:2018-02-28 12:00:55

标签: database laravel laravel-5.3 strtotime date-conversion

我从文档中学到的是,我需要创建一个mutator函数,该函数应该获取该值而不是将其转换为表。但是我经常遇到错误 SQLSTATE [01000]:警告:1265数据截断列' valid_to'在第1行(SQL:插入promotionsnamecity_idvalid_tois_activetypelimitupdated_atcreated_at)值(a,Jadah,2018-02-28,1,1,a,1519818982,1519818982))

代码的模型部分:

public function setValidFromValueAttribute($date)
    {
        $this->attributes['valid_from'] = strtotime($date);
    }
    public function setValidToValueAttribute($date)
    {
        $this->attributes['valid_to'] = intval($date);
    }

日期代码的刀片部分是

                <div class="form-group">
                    {!! Form::label('valid_from','Valid From') !!}
                    {!! Form::date('valid_from',\Carbon\Carbon::now()) !!}
                </div>
                <div class="form-group">
                    {!! Form::label('valid_to','Valid Till') !!}
                    {!! Form::date('valid_to',\Carbon\Carbon::now()) !!}
                </div>

迁移部分代码

$table->increments('id');
            $table->string('name')->unique();
            $table->integer('valid_from')->default(1);
            $table->integer('valid_to')->default(1);
            $table->tinyInteger('is_active');
            $table->tinyInteger('type');
            $table->string('city_id')->default('Jadah');
            $table->string('limit')->unsigined();
            $table->integer('updated_at')->unsigined();
            $table->integer('created_at')->unsigined();

任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:1)

在促销模型中,添加:

protected $dates = [
    'valid_from',
    'valid_to'
];

删除行

public function setValidFromValueAttribute($date)
{
    $this->attributes['valid_from'] = strtotime($date);
}

public function setValidToValueAttribute($date)
{
    $this->attributes['valid_to'] = intval($date);
}

在您的迁移文件中,替换与valid_fromvalid_to对应的行,如下所示

 $table->date('valid_from')
 $table->date('valid_to')

答案 1 :(得分:1)

转到display,搜索config/database.php数组并设置:

connections.mysql

你的功能:

'strict' => false,

答案 2 :(得分:0)

  

如果限制小于输出,则会出现此错误

EX:82638628721这是你得到的整数值

  

在您的数据库中,您将类型指定为int(5)。

     

82638628721&gt; int(5) - &gt;所以发生此错误只是增加了valid_to字段的限制

答案 3 :(得分:0)

我需要做的就是制作

protected $dates = [
        'valid_from',
        'valid_to'
    ];

并将valid_from和valid_to保留为迁移

$table->integer('valid_from');
$table->integer('valid_to');

并且一切正常