php - 根据日期时间值更改实体状态
问题描述
我有一个具有和字段的Subscription
实体。status
canceledAt
我想status
从过期时间更改active
为。canceled
canceledAt
所以,我想在方法中检查 cancelledAt Subscription::getStatus
:
// Subscription.php
public function getStatus()
{
// .... check canceledAt
return $this->status;
}
但这也需要更改持久层的状态。
我应该对事件做些什么吗?
解决方案
如果您不将时间视为输入值,请考虑它直到您这样做——这是一个重要的概念——John Carmack,1998
对于简单的查询,处理此问题的直接方法是将当前时间作为输入传递
// Subscription.php
public function getStatus(currentTime)
{
// .... check canceledAt
if (currentTime > canceledAt) {
// ....
}
return $this->status;
}
另一方面,如果您尝试做的是影响状态的权威更改,那么您可以在命令中将当前时间传递给您的域模型。
public function onTick(currentTime) {
// ....
}
在某些情况下,通过时钟的域服务表示而不是值来表示时间可能是有意义的。重要的一点是应用程序,而不是域模型,负责“现在几点?”
推荐阅读
- ruby - 生成字符串的所有可能大小写
- postgresql - Zeppelin 抛出 java.sql.SQLException:在 AWS 上运行演示 pyspark 脚本时没有合适的驱动程序
- angular-dart - 使用最新的 dart SDK 运行 AngularDart(空安全)
- glsl - GLSL/Shadertoy 生长六边形网格
- javascript - 使用 javascript 选择选项验证
- typescript - @types - 对象键的值数组
- ruby-on-rails - Rails 查询动态属性
- javascript - 来自 mongoDB 的 deleteOne 与对象显示页面支持中的 mongoose
- android - openface.nn4.small2.v1.t7 网络在哪里保存?
- python - UnicodeDecodeError:“ascii”编解码器无法解码字节 0x95