¿Como guardar la fecha y hora automáticamente en laravel?

publicado por: Anonymous

en mi proyecto los usuarios pueden hacer recarga y en la tabla recargas tengo un campo que se llama fecha_recarga el cual es de tipo DataTime por tal motivo nesesito saber como puedo guardar la fecha y hora actual sin usar un campo como <input type="date"> , porque no quiero que el usuario pueda manipular la fecha y la hora de la recarga sino que la coja del sistema .

tabla recargas

    public function up()
{
    Schema::create('recargas', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('usuario_id')->unsigned();
        $table->decimal('cantidad_recarga' , 8,2);
        $table->dateTime('fecha_recarga');
        $table->timestamps();

        $table->foreign('usuario_id')->references('id')->on('usuarios');
    });
}

Modelo Recarga

public function store(Request $request)
    {
        $recargas = new Recarga();
        $recargas->usuario_id = $request->Usuario;
        $recargas->cantidad_recarga = $request->Cantidad_Recarga;
        //Aqui Quiero Guardar La Feha
        $recargas->fecha_recarga = 
        $recargas->save();

        return redirect('recargas');
    }

Mi formulario donde guardo las recargas

    <a class="btn btn-primary" href="{{ route('recargas.index') }}"> Ver Usuario  </a>
<form style="width: 400px;border:0px red solid;margin:auto"  method="POST" action="{{ asset('/recargas') }}">
   <div class="form-row">
     <div class="form-group col-md-12">
       <label for="Nombre">Usuario</label>
       <select name="Usuario" id="Usuario" class="form-control">
         @foreach ($usuarios as $usuario)
       <option class="form-control" value="{{$usuario->id }}"> {{$usuario->nombre }}</option>
         @endforeach      
      </select>
     </div>
     <div class="form-group col-md-12">
       <label for="Cantidad_Recarga">Cantidad De Recarga</label>
       <input type="Cantidad_Recarga" class="form-control" name="Cantidad_Recarga" id="Cantidad_Recarga"  value="" placeholder="Cantidad Recarga">
     </div>
   </div>
   {{csrf_field()}}
   <button type="submit" class="btn btn-primary">Recargar</button>
 </form>
 <br> 

solución

Te puede funcionar hacerlo así como te comentaba en la otra publicación

al inicio de tu controller poner esto

Primero invoca al namespace de Carbon para poder usarlo y obtener en este caso la fecha actual que te sirve por que me comentaste que tienes un campode tipo datetime

use CarbonCarbon;

$fecha = Carbon::now();

$registro = new ModelName();
$registro->columnaNombre1 = $request->input("valorUno");
$registro->columnaNombre2 = $request->input("valorDos");
$registro->fechaColumna = $fecha;
$registro->save();

Para establecer la zona horaria y que te devuelva el dato correcto, puedes dentro de app/AppServiceProvider.php en el método boot declarar lo siguiente

date_default_timezone_set('America/Mexico_City');

Entonces para ver la diferencia, antes de usar la línea de código que pongo arriba el dato me aparecía así

2019-02-09 06:03:00

Posterior a su uso ahora tengo el dato así

2019-02-09 00:03:23

Aquí tienes la guía oficial de zonas horarias y como declararlas en PHP, solo usa la que te corresponda

http://php.net/manual/es/timezones.america.php

Del mismo modo puedes ir a app/config/app.php y en la zona de timezone colocar la zona horaria de este modo

'timezone' => 'America/Mexico_City',

Y con esto ya no es necesario hacer el primer paso que te comenté

Respondido por: user75901

Leave a Reply

Your email address will not be published. Required fields are marked *