我正在使用jenssegers mongodb 我想在我的控制器中保存created_at和updated_at,
"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 = [];
}
请帮我解决问题 提前谢谢!
答案 0 :(得分:2)
实际上 - 使用jenssegers/Laravel-MongoDB
包时 - 保存新模型对象时会自动设置 created_at 和 updated_at 属性。
但是,如果您仍想手动设置时间戳或任何其他日期时间字段,则必须将DateTime对象(或Carbon)转换为MongoDB\BSON\UTCDateTime
。
所以它会是这样的:
$myModel = new MyModel();
$myModel->created_at = $myModel->fromDateTime(new \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对象(即内部日期时间mongo rep)。