首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SugarCRM从SugarBean字段获得有效的TimeDate

SugarCRM从SugarBean字段获得有效的TimeDate
EN

Stack Overflow用户
提问于 2018-02-21 22:58:13
回答 2查看 801关注 0票数 0

我肯定遗漏了一些显而易见的东西,但似乎无法找到从TimeDate字段的值中获取SugarBean对象的方法。

假设我在这种电话中得到了一个明确的线索:

代码语言:javascript
复制
$lead = BeanFactory::retrieveBean('Leads', "18bfc69e-8cd4-11e7-ad08-000c29b1a36e");

那么对此的任何呼吁:

代码语言:javascript
复制
$lead->date_entered

将返回一个字符串值:"2017-08-29 16:05" (注意没有秒)。

因此,例如,如果我试图使用这样的值来创建一个SugarTimeDate:

代码语言:javascript
复制
$TimeDate = new TimeDate();
$SugarTimeDate = $TimeDate->fromDb($lead->date_entered);

它将返回false,因为提供给fromDb()的值格式不正确(秒数丢失)。

当查看带有蟾蜍的SQL表时,我可以看到,这些信息以DateTime的形式有效地存储在数据库中,其值为08/29/2017 16:05:56。但是SugarBean对象以文本的形式提供了一种不完全的格式。

那么,如何从给定的字段(理想情况下作为对象)中的字段中获得有效的SugarTimeDate、TimeDate或DateTime?

我进行了搜索,我找到的所有示例都是关于从现在开始创建一个新的date对象,将其设置为SugarBean中的某个字段,但没有一个从现有的datetime字段中设置日期时间字段。

任何暗示都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-23 15:31:12

通过四处游玩,在帕特里克McQueen的帮助下,有两种方法可以获得字段的有效日期值。

我找到的第一个解决方案是在需要的字段上选择一个SugarQuery,然后返回完整的日期信息,因此"2017-08-29 16:05:56"。有点过火了,但这做得很好。

Patrick提出的另一个解决方案是使用来自bean对象的fetcher_row数组,这也将返回完整的日期信息。所以:

代码语言:javascript
复制
$lead->fetched_row['date_entered']

威尔也会返回"2017-08-29 16:05:56"

因此,在任何情况下都需要一个有效日期(“往返”,其中包含一个get,或者某种同步要求),fetched_row[]是解决方案,对字段$bean->field的“直接”调用是绝对避免的。

票数 1
EN

Stack Overflow用户

发布于 2018-02-22 14:40:25

我不完全清楚您想要完成什么(请参阅我的评论),但我猜想您需要的是fromUser()函数,即

代码语言:javascript
复制
$SugarTimeDate = $TimeDate->fromUser($lead->date_entered);

原因是Sugar在调用代码时为GUI准备数据(包括根据用户首选项格式化日期)。这包括去掉秒。执行上面的fromUser()函数将根据当前用户配置的日期格式返回一个SugarDateTime对象,其中包含一个完整的日期字符串,作为" date“属性。反过来,可以在其他地方使用这一标准格式来处理这一问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48916955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档