nordsoftware/lumen-doctrine

View on GitHub
src/Traits/Timestamps.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php namespace Nord\Lumen\Doctrine\ORM\Traits;

use Doctrine\ORM\Mapping as ORM;
use Carbon\Carbon;

trait Timestamps
{

    /**
     * @ORM\Column(type="datetime", name="created_at")
     *
     * @var Carbon
     */
    private $createdAt;

    /**
     * @ORM\Column(type="datetime", name="updated_at", nullable=true)
     *
     * @var Carbon
     */
    private $updatedAt;


    /**
     * @ORM\PrePersist
     */
    public function prePersist()
    {
        $this->createdAt = Carbon::now();
    }


    /**
     * @ORM\PreUpdate
     */
    public function preUpdate()
    {
        $this->updatedAt = Carbon::now();
    }


    /**
     * @return Carbon
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }


    /**
     * @return Carbon
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }


    /**
     *
     *
     * @return int
     */
    public function getCreatedAtTimestamp()
    {
        return $this->createdAt->getTimestamp();
    }


    /**
     * @return int|null
     */
    public function getUpdatedAtTimestamp()
    {
        return $this->updatedAt instanceof Carbon ? $this->updatedAt->getTimestamp() : null;
    }
}