php - meaning - Cómo cambiar el formato predeterminado en el valor de created_at y updated_at laravel
unsigned laravel (4)
Laravel 4.xy 5.0
Para cambiar el tiempo en la base de datos, use: http://laravel.com/docs/4.2/eloquent#timestamps
Proporcionar un formato de marca de tiempo personalizado
Si desea personalizar el formato de sus marcas de tiempo, puede anular el método getDateFormat en su modelo:
class User extends Eloquent {
protected function getDateFormat()
{
return ''U'';
}
}
Laravel 5.1+
https://laravel.com/docs/5.1/eloquent
Si necesita personalizar el formato de sus marcas de tiempo, establezca la propiedad $ dateFormat en su modelo. Esta propiedad determina cómo se almacenan los atributos de fecha en la base de datos, así como su formato cuando el modelo se serializa a una matriz o JSON:
class Flight extends Model
{
/**
* The storage format of the model''s date columns.
*
* @var string
*/
protected $dateFormat = ''U'';
}
Soy nuevo en Laravel. Estoy creando una aplicación con laravel. Cuando estoy creando una publicación, los valores de "created_at" y ''updated_at "se ven así:
2014-06-26 04:07:31
2014-06-26 04:07:31
Pero quiero que estos valores sin tiempo se vean así:
2014-06-26
2014-06-26
Sólo fecha sin hora.
Es posible ???
Por favor, ayúdame.
Mi modelo de publicación:
<?php
class Post extends /Eloquent {
protected $fillable = array(''title'', ''body'', ''meta'',''reporter'', ''slug'', ''image'',''top'');
public static $rules = array(
''title''=>''required|min:2'',
''body''=>''required|min:20'',
''reporter''=> ''required|min:2'',
''image''=>''image|mimes:jpeg,jpg,bmp,png,gif''
);
public function categories()
{
return $this->belongsToMany(''Category'');
}
}
Mi tienda de Post Controller:
public function store()
{
$validator = Validator::make(Input::all(), Post::$rules);
if ($validator->passes()) {
$post = new Post;
$post->title = Input::get(''title'');
$post->body = Input::get(''body'');
$post->reporter = Input::get(''reporter'');
$post->meta = Input::get(''meta'');
$post->slug = Input::get(''title'');
$post->top = Input::get(''top'');
$image = Input::file(''image'');
if ($image) {
$filename = date(''Y-m-d-H:i:s'')."-".$image->getClientOriginalName();
Image::make($image->getRealPath())->resize(250, 145)->save(''public/images/postimages/''.$filename);
$post->image = ''images/postimages/''.$filename;
}
$categories = Input::get(''categories'');
$post->save();
$post->categories()->sync($categories);
return Redirect::route(''admin.posts.index'')
->with(''message'', ''Product Created'');
}
return Redirect::back()
->with(''message'', ''Something went wrong'')
->withErrors($validator)
->withInput();
}
Por favor, ayúdame.
En tu modelo de Post
agrega dos métodos de acceso como este:
public function getCreatedAtAttribute($date)
{
return Carbon/Carbon::createFromFormat(''Y-m-d H:i:s'', $date)->format(''Y-m-d'');
}
public function getUpdatedAtAttribute($date)
{
return Carbon/Carbon::createFromFormat(''Y-m-d H:i:s'', $date)->format(''Y-m-d'');
}
Ahora, cada vez que use estas propiedades de su modelo para mostrar una fecha, estas se presentarán de manera diferente, solo la fecha sin la hora, por ejemplo:
$post = Post::find(1);
echo $post->created_at; // only Y-m-d formatted date will be displayed
Por lo tanto, no es necesario cambiar el tipo original en la base de datos. para cambiar el type
en su base de datos, debe cambiarlo a Date
desde la Timestamp
de Timestamp
y debe hacerlo desde su migración (si está usando) o directamente a su base de datos si no está utilizando la migración. El método timestamps()
agrega estos campos (usando Migración) y para cambiar estos campos durante la migración, debe eliminar el método timestamps()
y usar date()
lugar, por ejemplo:
$table->date(''created_at'');
$table->date(''updated_at'');
Si alguien está buscando una solución simple en Laravel 5.3:
- Deje que las
timestamps()
predeterminadastimestamps()
se guarden como están, por ejemplo, ''2016-11-14 12:19:49'' En sus vistas, formatee el campo de la siguiente manera (o según sea necesario):
date(''F d, Y'', strtotime($list->created_at))
Me funcionó muy bien.
{{ $post->created_at }}
volverá ''2014-06-26 04:07:31''
La solucion es
{{ $post->created_at->format(''Y-m-d'') }}