150 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Illuminate\Database\Eloquent\Concerns;
 | 
						|
 | 
						|
use Illuminate\Support\Facades\Date;
 | 
						|
 | 
						|
trait HasTimestamps
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Indicates if the model should be timestamped.
 | 
						|
     *
 | 
						|
     * @var bool
 | 
						|
     */
 | 
						|
    public $timestamps = true;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Update the model's update timestamp.
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function touch()
 | 
						|
    {
 | 
						|
        if (! $this->usesTimestamps()) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->updateTimestamps();
 | 
						|
 | 
						|
        return $this->save();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Update the creation and update timestamps.
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    protected function updateTimestamps()
 | 
						|
    {
 | 
						|
        $time = $this->freshTimestamp();
 | 
						|
 | 
						|
        $updatedAtColumn = $this->getUpdatedAtColumn();
 | 
						|
 | 
						|
        if (! is_null($updatedAtColumn) && ! $this->isDirty($updatedAtColumn)) {
 | 
						|
            $this->setUpdatedAt($time);
 | 
						|
        }
 | 
						|
 | 
						|
        $createdAtColumn = $this->getCreatedAtColumn();
 | 
						|
 | 
						|
        if (! $this->exists && ! is_null($createdAtColumn) && ! $this->isDirty($createdAtColumn)) {
 | 
						|
            $this->setCreatedAt($time);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Set the value of the "created at" attribute.
 | 
						|
     *
 | 
						|
     * @param  mixed  $value
 | 
						|
     * @return $this
 | 
						|
     */
 | 
						|
    public function setCreatedAt($value)
 | 
						|
    {
 | 
						|
        $this->{$this->getCreatedAtColumn()} = $value;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Set the value of the "updated at" attribute.
 | 
						|
     *
 | 
						|
     * @param  mixed  $value
 | 
						|
     * @return $this
 | 
						|
     */
 | 
						|
    public function setUpdatedAt($value)
 | 
						|
    {
 | 
						|
        $this->{$this->getUpdatedAtColumn()} = $value;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get a fresh timestamp for the model.
 | 
						|
     *
 | 
						|
     * @return \Illuminate\Support\Carbon
 | 
						|
     */
 | 
						|
    public function freshTimestamp()
 | 
						|
    {
 | 
						|
        return Date::now();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get a fresh timestamp for the model.
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function freshTimestampString()
 | 
						|
    {
 | 
						|
        return $this->fromDateTime($this->freshTimestamp());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Determine if the model uses timestamps.
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function usesTimestamps()
 | 
						|
    {
 | 
						|
        return $this->timestamps;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the name of the "created at" column.
 | 
						|
     *
 | 
						|
     * @return string|null
 | 
						|
     */
 | 
						|
    public function getCreatedAtColumn()
 | 
						|
    {
 | 
						|
        return static::CREATED_AT;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the name of the "updated at" column.
 | 
						|
     *
 | 
						|
     * @return string|null
 | 
						|
     */
 | 
						|
    public function getUpdatedAtColumn()
 | 
						|
    {
 | 
						|
        return static::UPDATED_AT;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the fully qualified "created at" column.
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getQualifiedCreatedAtColumn()
 | 
						|
    {
 | 
						|
        return $this->qualifyColumn($this->getCreatedAtColumn());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the fully qualified "updated at" column.
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getQualifiedUpdatedAtColumn()
 | 
						|
    {
 | 
						|
        return $this->qualifyColumn($this->getUpdatedAtColumn());
 | 
						|
    }
 | 
						|
}
 |