Lo que aprendí de la documentación es que necesito hacer una función de mutación que debería obtener ese valor y luego convertirlo en una tabla. Pero constantemente recibo el error de SQLSTATE [01000]: Advertencia: 1265 Datos truncado para la columna 'valid_to' en la fila 1 (SQL: insertar en promotions (name, city_id, valid_to, is_active, type, Valores limit, updated_at, created_at) (a, Jadah, 2018-02-28, 1, 1, a, 1519818982, 1519818982))

Parte del modelo del código:

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

La parte de la hoja del código para la fecha es

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

Parte del código de migración

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

Cualquier ayuda sería muy apreciada.

1
DaShInG Sid 28 feb. 2018 a las 15:00

4 respuestas

La mejor respuesta

Todo lo que necesitaba hacer era hacer

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

Y seguir siendo valid_from y valid_to en la migración como

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

Y todo funcionó bien

0
2 revs 28 feb. 2018 a las 18:48

Vaya a config/database.php, busque la matriz connections.mysql y establezca:

'strict' => false,

Y tu función:

public function setValidToValueAttribute($date)
{
    $this->attributes['valid_to'] = strtotime($date);
}
1
Sohel0415 28 feb. 2018 a las 12:18

Si le das un límite inferior a tu salida, obtienes este error

EX: 82638628721 este es el valor entero que obtienes

En su DB, le da el tipo como int (5).

82638628721> int (5) -> por lo que este error ocurre solo aumente el límite en el campo valid_to

0
Siva Ganesh 28 feb. 2018 a las 12:30

En su modelo de promoción, agregue:

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

Eliminar las líneas

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

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

En su archivo de migración, reemplace las líneas correspondientes a valid_from y valid_to de la siguiente manera

 $table->date('valid_from')
 $table->date('valid_to')
1
Prince Lionel N'zi 28 feb. 2018 a las 12:18