【问题标题】:Symfony2 DoctrineSymfony2 学说
【发布时间】:2011-07-12 12:13:28
【问题描述】:

我尝试使用

进行数据库查询
$position = $repository->findBy(
    array('id' => $profileId,'datum' => '10.07.2011'),
    array('timestamp', 'DESC')
);

数据库看起来像

id  haveInCircles   inOtherCircles  datum   timestamp
1   24  14  11.07.2011  1310403840
1   20  10  10.07.2011  1310317440
1   10  5   09.07.2011  1310317440
1   25  17  12.07.2011  1310468838

我得到的结果总是最后一天的数据进入数据库。在本例中为“12.07.2011”。

【问题讨论】:

  • 该字段(在您的实体中)和列(在数据库中)的数据类型是什么
  • 在数据库 varchar(40) 和实体字符串中
  • 你的表的主键是哪个?

标签: doctrine symfony


【解决方案1】:

对日期使用 varchar 可能是最糟糕的方法。将基准字段更改为日期或日期时间,相应地更改您的模型,使 doctine 字段为日期,然后执行以下操作:

$position = $repository->findBy(
    array('id' => $profileId,'datum' => new Datetime('2011-07-10')),
    array('timestamp' => 'DESC')
);

http://www.php.net/manual/en/datetime.construct.php

关于架构实践的简要说明,我建议您回顾一下: http://brixican.blogspot.ca/2011/04/5-mysql-best-practices-when-designing.html

【讨论】:

【解决方案2】:

如果 'datum' 的数据库字段是日期时间,请尝试使用:2011-07-10 格式 :-)
Symfony2 articles

【讨论】:

  • 很明显他没有将日期作为日期时间字段,Doctrine 会用其他格式刷新它。
【解决方案3】:

我同意其他人的观点,您应该将该字段更改为日期时间格式,但是如果您在开发人员模式下使用 Symfony2,您可以检查与您的 Doctrine ORM 查询构建器相对应的 SQL 日志(数据库查询),从那里您可能知道您的查询生成器出了什么问题

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2012-03-11
    • 1970-01-01
    • 2017-01-22
    • 2012-08-03
    • 2014-05-08
    相关资源
    最近更新 更多