【发布时间】:2012-02-07 16:01:20
【问题描述】:
我在数据库表中有premiere_poland 列,它是date 类型。
/** @Column(type="date", nullable=TRUE) */
protected $premiere_poland;
我的问题是,我想存储 2012-01-01、2013-00-00、2013-01-00 等日期,并且我想要那种类型的日期,但 Doctrine 每次都会在 DateTime 实例和真实形式中返回该列数据已更改(例如,2013-01-00 = 31.12.2012)。
如何让 Doctrine 将此值作为字符串返回,而不是 DateTime 类实例。
我的查询:
$q = "SELECT
g,
p.name AS platform_name, p.name_short AS platform_name_short, p.id AS platform_id,
s.premiere_poland, s.premiere_world
FROM Game g
JOIN g.genres ge
JOIN g.platform p
LEFT JOIN g.specification s
WHERE g.id = :id";
$results = $db->createQuery($q)->setParameter('id', $_GET['id'])->getResult();
【问题讨论】:
-
2013-01-00不是有效日期,因此 PHP 的DateTime对象和 MySQL 的DATE类型应该将其“转换”为有效日期。反正你为什么要存放这么奇怪的东西? -
你能快速显示一个
var_dump($object->premier_poland)吗?根据docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/…,您的设置中的一切看起来都是正确的 -
@Crozin 因为我需要存储游戏日期首映的列,而首映可能不完全清楚(例如 2013 年 3 月或仅一年)。 @Mike 是的,但如果我在数据库中有
2013-01-00var_dump 将返回我string(10) "31.12.2012"。这是错误的;p。 -
@KrzysztofTrzos 谢谢。很高兴 Crozin 能够提供解决方案 :)
标签: php doctrine-orm