【问题标题】:Symfony2 getDateTime returns NullSymfony2 getDateTime 返回 Null
【发布时间】:2015-12-15 00:26:10
【问题描述】:

我有一个班级管理成员, 我所有的日期时间字段都返回 NULL

/**
 * Date/Time of the last activity
 *
 * @ORM\Column(name="last_activity_at", type="datetime", nullable=true)
 */
protected $last_activity_at = null;

/**
 * @param datetime $lastActivityAt
 */
public function setLastActivityAt($lastActivityAt)
{
    $this->last_activity_at = $lastActivityAt;
}

/**
 * @return datetime
 */
public function getLastActivityAt()
{
    return $this->last_activity_at;
}

显然我的数据库中有数据

但是,当我检索我的 $member 对象时,所有值都在那里,除了 date 和 datetime 字段 null

建议?

【问题讨论】:

  • protected $last_activity_at = null - 似乎是罪魁祸首,默认参数应该在构造函数中。删除= null,你不需要它,学说会为你处理。
  • 不走运对不起@Richard
  • 检查您在 Resources/config/doctrine 下没有任何映射文件,因为它们可能会干扰您的注释。顺便说一句,不要依赖构造函数初始化。水合期间不会调用构造函数,因此您可能会遇到意外行为。
  • 我们现在只能用目前的信息推测,你能确认$lastActivityAt包含一个有效的日期时间值吗?
  • @NickOS 你能告诉我们你是如何检索和显示它的吗?

标签: php sql symfony datetime doctrine


【解决方案1】:

将上面的替换为下面的会发生什么?

/**
 * Date/Time of the last activity
 *
 * @var \DateTime
 * @Doctrine\ORM\Mapping\Column(name="last_activity_at", type="datetime", nullable=true)
 */
protected $last_activity_at;

/**
 * @param \DateTime $lastActivityAt
 */
public function setLastActivityAt(\DateTime $lastActivityAt)
{
    $this->last_activity_at = $lastActivityAt;
}

/**
 * @return \DateTime
 */
 public function getLastActivityAt()
 {
     return $this->last_activity_at;
 }

【讨论】:

  • 仍然为空对不起埃里克
【解决方案2】:

您可以通过多种方式设置此字段。但从你的字段名称来看,我建议Doctrine LifecycleCallbacks

来自文档:生命周期回调是在实体类上定义的。它们允许您在该实体类的实例遇到相关生命周期事件时触发回调。

例子:

/** @PreUpdate */
public function onLastActivityAtPreUpdate()
{
    $this->last_activity_at = new \DateTime();
}

Documentation 上,您可以全面了解多个事件,您必须选择最适合您的事件。

【讨论】:

  • 感谢 Stiven,我熟悉 Lifecycle Callbacks 学说,我认为我的问题是我的 obj 是从某处延迟加载的,如果我编写自定义查询并水合到数组,则会返回我的 datetime 对象,但是,通过使用 obj getter,它们总是返回 null。目前不是关键问题,只是一个小错误
  • @NickOS 这是在服务内吗?
  • 是的,我有一个在内核上作为服务运行的事件监听器
  • 很可能您的服务优先级太高并且对象没有水合。你可以降低它。如果我站得更正,值可以在 - 255 到 255 之间变化。默认值为 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多