📜  模型 laravel 中的时间戳 - PHP (1)

📅  最后修改于: 2023-12-03 14:55:52.669000             🧑  作者: Mango

Laravel 中的时间戳

Laravel 提供了一种便捷的方式来管理数据库中的时间戳,以便在模型的创建和更新时自动填充。这个特性可以使开发流程更加高效,并且减少了代码中的重复性。

如何使用

在 Laravel 中使用时间戳特性非常简单。首先,我们需要在模型中添加 $timestamps 属性并将其设置为 true。这样就在数据库中自动添加一个 created_atupdated_at 字段。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class MyModel extends Model
{
    /**
     * 是否需要写入时间戳字段
     *
     * @var bool
     */
    public $timestamps = true;
}

如果你不需要两种类型的时间戳,可以通过在模型中设置 $timestamps 属性为 false 来关闭。

/**
 * 是否需要写入时间戳字段
 *
 * @var bool
 */
public $timestamps = false;
自定义字段

如果你的数据库表有不同的时间戳列名,则可以通过设置 $createdAt$updatedAt 来自定义这些列的名称。

/**
 * 自定义写入的字段名
 *
 * @var string
 */
const CREATED_AT = 'creation_date';

/**
 * 自定义更新的字段名
 *
 * @var string
 */
const UPDATED_AT = 'last_update';

注意:如果你自定义了时间戳的数据库字段名,则必须在模型中对应更新。

/**
 * 自定义写入的字段名
 *
 * @var string
 */
const CREATED_AT = 'created_time';

/**
 * 自定义更新的字段名
 *
 * @var string
 */
const UPDATED_AT = 'updated_time';

/**
 * 返回创建时间的字段名
 *
 * @return string
 */
public function getCreatedAtColumn()
{
    return $this->CREATED_AT;
}

/**
 * 返回更新时间的字段名
 *
 * @return string
 */
public function getUpdatedAtColumn()
{
    return $this->UPDATED_AT;
}
手动操作时间戳

如果你需要手动操作时间戳字段,可以使用 updateTimestamps() 方法来更新时间戳。

$model = new MyModel($attributes);

// 手动设置时间戳
$model->created_at = $model->freshTimestamp();
$model->updated_at = $model->freshTimestamp();

// 更新持久模型中的时间戳
$model->updateTimestamps();

// 保存模型
$model->save();

注意:在手动操作时间戳时,你需要使用 freshTimestamp() 方法来获取当前时间戳,并保存模型。

总结

时间戳是 Laravel 中强大的数据库特性之一。使用它可以轻松地管理数据库中的日期和时间,加速项目开发。这个特性可以让你的代码更加干净和优雅,同时减少了重复性。