2016-04-25 3 views
0

Я использую jenssegers MongoDB Я пытаюсь сохранить created_at и updated_at в мой контроллер,Неправильный DateTime в created_at и updated_at полей в Laravel 5.2

"updated_at" : ISODate("1970-01-11T19:45:21.925Z"), 
"created_at" : ISODate("1970-01-11T19:45:21.925Z") 

и даже для обновления также, неправильные даты сохранения

в моем app.php

в псевдонимами

'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model', 

в поставщиках

'Jenssegers\Mongodb\Auth\PasswordResetServiceProvider', 

в моей модели

use Moloquent; 

class Task extends Moloquent{ 
     //$fillables = []; 
} 

enter image description here

Пожалуйста, помогите мне в решении этого вопроса Спасибо заранее!

+0

Вы используете 'jenssegers/Laravel-MongoDB' пакет? Кроме того, почему вы хотите вручную установить created_at и updated_at (поскольку он автоматически устанавливается во время создания)? – felipsmartins

+0

прокомментировал created_at и updated_at вставить и сохранен в db "updated_at": ISODate ("1970-01-15T17: 25: 44.107Z"), "created_at": ISODate ("1970-01-15T17: 25: 44.107Z ") невозможно получить данные, а также почему даты неправильные @felipsmartins – Gireesh

+0

почему вы хотите вручную установить created_at и updated_at? – felipsmartins

ответ

2

На самом деле - при использовании jenssegers/Laravel-MongoDB пакета - created_at и updated_at атрибутов автоматически устанавливаются при сохранении нового объекта модели.

Однако, если вы все еще хотите установить вручную временные метки или другое поле datetime, вы ДОЛЖНЫ преобразовать объект DateTime (или Carbon) в MongoDB\BSON\UTCDateTime.

Так что было бы что-то вроде этого:

$myModel = new MyModel(); 
$myModel->created_at = $myModel->fromDateTime(new \DateTime()); 
//... 

А для другого DateTime атрибута кроме created_at/updated_at:

class Task extends Model 
{ 
    protected $collection = 'tasks'; 

    protected $duedate; 

    protected $dates = ['duedate']; 

    /** Mutator */ 
    public function setDuedateAttribute($value) 
    { 
     /** @var \MongoDB\BSON\UTCDateTime */ 
     $this->attributes['duedate'] = $this->fromDateTime(
      \DateTime::createFromFormat('d/m/Y H:i', $value . '00:00')); 
    } 
} 

Jenssegers\Mongodb\Eloquent::fromDateTime() доступен из любого экземпляра модели, как он наследует от родительской модели (см. в github). Этот метод конвертирует DateTime в сохраняемый объект UTCDateTime (который является внутренним репозитором tatetime datetime).

+0

Jenssegers \ Mongodb \ Eloquent :: fromDateTime(), где я должен добавить это? – Gireesh

+0

@Gireesh Я обновил ответ. – felipsmartins

+0

спасибо за помощь. Но можете ли вы помочь мне в получении точной даты.Мои даты сохраняются как 1970-01-15 – Gireesh

Смежные вопросы