如何处理 Doctrine2 SELECT 查询中 DateTime 类型的默认值?

2024-01-09

我有以下 Doctrine2 实体:

<?php

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
 * @ORM\Entity
 */
class Account
{
    use TimestampableEntity;

    /**
     * @var integer
     *
     * @ORM\Id
     * @ORM\Column(type="integer", unique=true, nullable=false)
     */
    private $id;
}

正如你所看到的,我正在使用Gedmo 时间戳 https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/timestampable.mdTrait https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/timestampable.md#traits由捆绑包提供。运行良好。

当我获取数据和列时出现问题updated_at即将到来NULL罢工>0000-00-00 00:00:00。对于这种情况DateTime对象被翻译成invalid日期如下图所示:

‌array (
  'RowId' => 26944,
  'synchflag' => 1,
  'updatedAt' => 
  DateTime::__set_state(array(
     'date' => '-0001-11-30 00:00:00.000000',
     'timezone_type' => 3,
     'timezone' => 'UTC',
  )),
)

我确实检查过docs http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/working-with-datetime.html但没有任何帮助(或者至少我没有找到它,如果你让我知道的话)

处理这个问题的正确方法是什么?

EDIT:

也许这里正确的问题应该是:如果updated_at即将到来0000-00-00 00:00:00我怎样才能把它变成NOW()?正如您可能注意到的getUpdatedAt()返回一个DateTime基于获取的数据。有什么活动吗SELECT陈述?


由于问题是数据库已经具有这些无效值,因此您可以创建自己的学说日期时间类型,以便在从数据库读取该无效值时转换为 null:

<?php
namespace AppBundle\Doctrine\DBAL;

use DateTimeZone;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\ConversionException;
use Doctrine\DBAL\Types\DateTimeType;

class MyDateTimeType extends DateTimeType
{


   public function convertToPHPValue($value, AbstractPlatform $platform)
   {
       if (null === $value || $value instanceof \DateTime) {
           return $value;
       }

       if ('0000-00-00 00:00:00' === $value) {
          return null;
       }

       return parent::convertToPHPValue($value, $platform);
   }
}

并在学说配置中注册此自定义类型:

doctrine:
   dbal:
       types:
           datetime: AppBundle\Doctrine\DBAL\MyDateTimeType

注意:您可以使用正则表达式和/或日期时间有效性检查而不是简单的比较来增强此代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 Doctrine2 SELECT 查询中 DateTime 类型的默认值? 的相关文章

  • 执行 mysqli->set_charset() 的永久方法?

    将我可以找到的字符集的所有配置文件和运行时选项设置为 utf 8 后 使用 php 建立的新 mysqli 连接的字符集仍然设置为 latin1 这实际上意味着我必须调用 mysqli gt set charset utf8 每次我连接 m
  • Doctrine ORM 的表命名约定

    使用 Doctrine ORM 时是否有命名表的约定 我喜欢用复数来命名表格 但如果有约定 我想遵守它 因此 表 users 将与使用 fk 作为单数 user id 的表相关 是否有最佳实践 使用单数或复数表名称 如果是后者 这如何应用于
  • PHP 类中的命名空间和全局变量问题

    我陷入了这种困惑 我不明白为什么我的 HelperClass 下的全局 error 返回空 我可以验证 class gt error 确实之前已填充了数据 在这种情况下 命名空间是否存在某种我不知道的问题 请给我一些指点 以下是一些相关的代
  • LDAP 过滤器用于区分名称

    我使用以下代码成功查询 Active Directory 中的用户 filter objectCategory person samaccountname someusername fields array samaccountname m
  • 联系表 7 根据用户选择立即发送给多个联系人

    您好 我正在 WordPress 联系表单 7 中创建联系表单 如果用户选择 全部 我想立即向多个收件人发送电子邮件 我看过这个 但似乎没有记录您是否可以一次发送给多个收件人http contactform7 com selectable
  • php 测试字符串是否包含三个字符串之一?

    实现以下目标的最佳方法是什么 我有一个 img变量包含例如myimage left jgp someimage center jpg or img right jpg 最好的测试方法是什么 left right or center文件名并提
  • str_getcsv 未正确解析数据

    我对 PHP 的 str getcsv 函数有疑问 我有这个代码
  • 如何将 Ajax 与 Symfony2 集成 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 symfony2 中
  • ZF2:如何将参数传递给转发插件,然后我可以在转发它们的方法中获取这些参数?

    我有一个 Action 方法Foo需要参数的控制器 public function fooAction one two a one b two 我需要从某些方法的其他方法转发到该方法Boo控制器 这些参数之一必须是引用参数 唯一的例子就是手
  • 如何使用 php 命令使注册表单高度安全?

    我想让代码对用户来说真正安全 下面的代码显示了 php 代码 我已将其用于我的网站 现在我已经使用了一些验证 例如密码和重复密码必须匹配 并且用户必须输入所有字段 为了使其更安全 我想插入安全命令 例如 PDO mysqli crypto
  • PHP:数据库连接类构造方法

    我是面向对象编程的新手 最初 我是在类内部和构造函数外部定义变量并为其赋值 但是在今天的 Java OOP 课程之后 我被告知这是不好的风格 应该避免 这是我模拟的原始 PHP 数据库连接类 class DatabaseConnection
  • 通过 Composer 安装 Codeception 到 Yii2

    我在将 Codeception 安装到 Yii2 项目时遇到问题 1 下载composer到Yii2项目中 curl sS https getcomposer org installer php 2 尝试安装Codeception php
  • 在 Java 和 PHP 之间加密/解密字符串

    我使用 AES 加密来加密和解密服务器端的 php 和 Android 应用程序 作为客户端 之间的字符串 PHP 中的加密字符串为 HaxRKnMxT24kCJWUXaVvqDHahzurJQK sYA4lIHql U 在 Java 中是
  • PHP 性能有多好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是我最近看到的一篇文章的后续内容 该文章表明 PHP 性能很差 PHP 始终是瓶颈 我的服务器群 让我向您展示 PHP 整体性能 http t
  • 来自外部文件的 PHP 变量?

    编辑 完成的解决方案 工作代码 所以 这是我的一个朋友帮我想出来的 这是我在 K2 items php 文件中使用的部分 div class fb comments div
  • 删除删除线的 unicode 文本?

    我偶尔会收到用户的输入 他们正在使用那些烦人的 stikethrough 文本生成器 这破坏了我的代码 我尝试过在这里找到的一些代码 string preg replace x00 x1F x80 xFF string 它有效 但我需要它只
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • 从php字符串中删除奇怪的字符

    这就是我现在所拥有的 将 RSS feed 绘制到 php 中 RSS feed 中的原始 xml 如下所示 Paul 8217 s Confidence 到目前为止我拥有的 php 是这样的 newtitle item gt title
  • 如何在 PHP 中验证电子邮件? [复制]

    这个问题在这里已经有答案了 如何使用 php5 验证输入值是有效的电子邮件地址 现在我正在使用这段代码 function isValidEmail email pattern a z0 9 a z0 9 a z0 9 a z0 9 a z
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j

随机推荐

  • 将文本字段完成限制为 Intellij Plugin 中的一组特定段

    根据此处的答案 我能够获得代码完成以适用于我的插件中的文本字段 IntelliJ 插件中具有标准 PsiElement 自动完成功能的文本字段 https stackoverflow com questions 59443789 text
  • Web应用前端和后端的误区

    我需要一些指导 建议 我决定构建一个 Web 应用程序 但我很难将所有组件组合在一起 我过去制作过基本的网站 但已经忘记了很多 我过去学过 JavaScript 和 Java 但我有点生疏 所以如果你决定回复 请把我当作一个对这一切都不熟悉
  • 如何将文件从一个目录移动到另一个目录?

    我是 python 初学者 我想将一些文件从一个目录移动到另一个目录 我现在必须使用一些模块 例如 Os 和 Shutil 我写了这段代码 但它返回一个错误 import shutil import os source os listdir
  • 如何使用 CSS 模块在 React 中设置子组件的样式

    我正在将 React 与 SASS 和 CSS 模块结合使用 如何在不传递新的 ClassName 或类似名称的情况下设置子组件的样式 对于前 我想在子组件上定位或执行一些样式 而不必给出特定的类 就像您所做的那样p span例如 所有跨度
  • 如何将 epub 文件下载到本地 iPhone 上?

    我想通过传递文件的 url 将 epub 文件下载到本地应用程序中 http www jedisaber com eBooks books sample epub http www jedisaber com eBooks books sa
  • 从 AsyncTask 检索对象值

    我正在创建异步任务 检索字符串数据 View OnClickListener btnClk new View OnClickListener Override public void onClick View v if btnGetData
  • 创建大于 23k x 23k 的巨大高分辨率位图

    我想创建一个巨大的分辨率位图图像 以便将其加载到内存中并根据用户手势进行转换 我注意到限制为new Bitmap int32 int32 大约是 23000 但我需要 1159480 x 45920 位深度为 32 有人可以帮助我吗 或者这
  • 如何在 tkinter 中取消选择 ttk.Treeview 中的行

    一旦我点击进入ttk Treeview 并选择一行 我可以单击另一行 但我无法UNSELECT所有行中 始终至少会选择 1 行 有没有一种聪明的方法可以取消选择最后选定的行 更改我使用的变量名称treeview ttk Treeview 并
  • Docker API 无法应用 json 过滤器

    根据https docs docker com engine reference api docker remote api v1 24 list tasks https docs docker com engine reference a
  • Rails 5.1 API - 如何允许嵌套 JSON 对象属性的参数

    关于这个主题至少有 10 个问题 但没有一个问题能回答这个特定问题 许多问题都与 Rails 表单相关 例如this https stackoverflow com questions 32529757 how can i get stro
  • 我只需要“身份网址”吗? - 开放ID

    我只是想知道我是否需要的只是身份 url 以便理论上将 OpenID 帐户附加到用户的帐户 我的身份网址如下所示 https www google com accounts o8 id id YGnyuGHMUmhUI98nuhUMhu98
  • 如何使用 Yarn v3 安装本地包?

    我尝试使用 Yarn v3 安装本地包 结果撞到了墙上 这是我尝试过的所有事情 Run yarn add file hardhat packager Run yarn add hardhat packager 手动添加 hardhat pa
  • 为什么 constexpr 上下文会使编译器失败,而它却无法完美优化?

    我玩过constexpr并实现了一些有趣的行为 在某些情况下添加constexpr在函数前面启用GCC尝试更加努力地优化 这会导致完全优化函数并仅提供计算值 然而 从一个调用这样一个完全优化的函数constexprcontext 会导致错误
  • 如何在 iOS Swift 中获取应用程序的 CFBundleURLSchemes

    我制作了一个演示项目 App1 其中添加了一个按钮 该按钮会将我重定向到已安装的应用程序 假设 App2 fitbit 我已经阅读了很多教程 并且基本上通过第二个答案了解了如何做到这一点 此应用程序不允许查询方案 cydia IOS9 错误
  • 在 ng-repeat 之后执行 jQuery 函数

    在此先感谢您的帮助 我正在用这个标签管理器 http welldonethings com tags manager在我的网络应用程序中 jQuery 函数在此之前工作正常
  • 具有多个模板参数包的部分模板专业化

    继续我的可变参数模板世界之旅 https stackoverflow com q 4691657 20984 我又遇到了一个问题 假设有以下模板类 template lt typename T gt struct foo default i
  • sqoop导入多个表

    我们正在使用 Cloudera CDH 4 并且能够按预期将表从 Oracle 数据库导入到我们的 HDFS 仓库中 问题是我们的数据库中有数十万张表 而 sqoop 一次只支持导入一张表 有哪些选项可用于将多个表导入 HDFS 或 Hiv
  • 覆盖 以切换 VS CODE 上的菜单栏

    我想要实现的目标如下 Disable ALT显示菜单栏toggle menu bar完全地 gt 潜在的地图ALT to a NULL action 使用不同的快捷方式toggle menu bar 有办法实现这一点吗 在 Ubuntu 上
  • 页面加载时的随机 Div 顺序 [重复]

    这个问题在这里已经有答案了 我有一堆 ID 为 gallerycard 的 div 我需要它们在用户每次访问页面时以随机顺序加载 div div Akulina div div N A div div div div Martina div
  • 如何处理 Doctrine2 SELECT 查询中 DateTime 类型的默认值?

    我有以下 Doctrine2 实体