neon/model-publishable

为内容类设置时间戳以处理发布和过期。

1.0.0 2023-03-21 15:50 UTC

This package is auto-updated.

Last update: 2024-09-21 18:56:24 UTC


README

处理任何模型以使其可发布。

要求

  • "neon/model-uuid": "^1.0"

安装

轻松安装 composer 包

composer require neon/model-publishable

用法

数据库

在数据库中,Publishable 需要两个字段 datetime

  • published_at 以存储显示的开始时间。
    $table->timestamp('published_at')
      ->nullable()
      ->default(null);
    
  • expired_at 以存储记录将过期的时间。
    $table->timestamp('expired_at')
      ->nullable()
      ->default(null);
    

两个字段都可为空,默认值是 NULL。

模型

在模型中,我们只需应用 Publishable 特性,如下所示

use Neon\Model\Traits\Publishable;

class AwesomeModel extends Model
{
    use Publishable;
}

然后你可以使用一些常用方法,比如

  • 要发布模型,存在 $model->publish() 方法。
  • 如果你必须在一个特定时间发布,可以使用 $model->publishedAt($timestamp) 方法。
  • 要使其过期,可以使用 $model->expire()$model->expiredAt($timestamp) 方法。

Published 范围会自动应用于模型。如果你想获取所有模型,可以使用 ->withNotPublished() 方法,那么范围将不会应用。

事件

此特性添加了一些新的 Eloquent 模型事件

  • publishing 会在调用 publish()publishedAt() 方法后,但保存之前被调用。
  • 保存后,会触发 published 事件。
  • 对于过期,有 expiringexpired 方法。

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。