Laravel 中 使用模型作为标志
我最近一直在尝试的一件事是使用模型作为标志,并取得了积极的成果。当你需要以某种方式标记你的一个模型时,你可以在表中添加一个布尔值来指示某种状态。例如,假设你向应用程序添加了一个停用用户的功能。你可以使用如下迁移来更改用户表:
Schema::table('users', function (Blueprint $table) {
$table->boolean('is_deactivated')->default(false);
});
太棒了!现在,您可以更新is_deactivated数据库中的列,并 $user->is_deactivated在需要处理用户停用状态时检查代码。这是我刚开始时使用的模式,对于很多用例来说,这非常有效。
使用时间戳作为标志
然而,几年前,我在 Twitter 上看到一条帖子(遗憾的是我记不清是谁写的了,抱歉!)建议我们使用时间戳,而不是布尔标志:
Schema::table('users', function (Blueprint $table) {
$table->timestamp('deactivated_at')->nullable();
});
这还有一个额外的好处,就是可以让你看到用户何时被停用,而不需要太多的权衡(除了数据库存储的几个额外字节)。在应用此模式时,我倾向于isDeactivated在我的模型上添加一个方法,以确保代码仍然读起来很好。
public function