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

how to convert a date into an integer in laravel

我从文档中学到的是,我需要制作一个应该获取该值的增变函数,而不是将其转换为 table.But 我不断收到 的错误SQLSTATE[01000]:警告:第 1 行第 'valid_to' 列的 1265 数据被截断(SQL:插入 promotionsnamecity_id, valid_to, is_active, type, limit, updated_at, created_at) values (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);
    }

Blade 部分日期代码是

                <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();

任何帮助将不胜感激。

在您的推广模型中,添加:

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')

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

'strict' => false,

你的函数:

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

If you give limit less than your output you get this error

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

In your DB you give the type as int(5).

82638628721 > int(5) -> so this error occurs just increase the limit on valid_to field

我需要做的就是制作

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

并保留 valid_from 和 valid_to 迁移为

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

一切正常