Из документации я узнал, что мне нужно создать функцию-мутатор, которая должна получать это значение и затем преобразовывать его в таблицу. Но я постоянно получаю сообщение об ошибке SQLSTATE [01000]: Предупреждение: 1265 данных усечено для столбца 'valid_to' в строке 1 (SQL: вставить в promotions (name, city_id, valid_to, is_active, type, limit, updated_at, created_at) значения (а, Джада, 2018-02-28, 1, 1, а, 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();

Любая помощь будет высоко ценится.

1
Hassaan 28 Фев 2018 в 15:00

4 ответа

Лучший ответ

Все, что мне нужно было сделать, это сделать

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

И остаются valid_from и valid_to в миграции как

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

И все работало нормально

0
2 revs 28 Фев 2018 в 18:48

Перейдите в config/database.php, найдите массив connections.mysql и установите:

'strict' => false,

И ваша функция:

public function setValidToValueAttribute($date)
{
    $this->attributes['valid_to'] = strtotime($date);
}
1
Sohel0415 28 Фев 2018 в 12:18

Если вы дадите лимит меньше, чем ваш вывод, вы получите эту ошибку

Пример: 82638628721 это целочисленное значение, которое вы получаете

В вашей БД вы указываете тип как int (5).

82638628721> int (5) -> так что эта ошибка возникает, просто увеличьте ограничение на поле valid_to

0
Siva Ganesh 28 Фев 2018 в 12:30

В вашей модели продвижения добавьте:

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_from и valid_to, следующим образом

 $table->date('valid_from')
 $table->date('valid_to')
1
Prince Lionel N'zi 28 Фев 2018 в 12:18