0

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

假设我通过这种调用获得了特定的潜在客户:

$lead = BeanFactory::retrieveBean('Leads', "18bfc69e-8cd4-11e7-ad08-000c29b1a36e");

然后对此的任何调用:

$lead->date_entered

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

那么,例如,如果我尝试使用这样的值来创建 SugarTimeDate:

$TimeDate = new TimeDate();
$SugarTimeDate = $TimeDate->fromDb($lead->date_entered);

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

使用 Toad 查看 SQL 表时,我可以看到信息作为 DateTime 有效地存储在数据库中,值为08/29/2017 16:05:56. 但是 SugarBean 对象将其作为格式不完整的文本提供。

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

我进行了搜索,发现的所有示例都是关于从 Now 创建新的日期对象以设置到 SugarBean 中的字段,但没有从现有的日期时间字段设置日期时间字段。

任何提示将不胜感激。

4

2 回答 2

1

通过玩耍,并在Patrick McQueen的帮助下,似乎有两种方法可以获取字段的有效日期值。

我发现的第一个解决方案是在所需字段上选择一个 SugarQuery,然后返回完整的日期信息,所以"2017-08-29 16:05:56". 有点矫枉过正,但它确实完成了工作。

Patrick 提出的另一个解决方案是使用fetcher_rowbean 对象中的数组,它也会返回完整的日期信息。所以:

$lead->fetched_row['date_entered']

也将返回"2017-08-29 16:05:56"

因此,无论如何都需要一个有效日期(“往返”,然后是一组,或一些同步要求),这是解决方案,并且绝对要避免fetched_row[]“直接”调用该字段。$bean->field

于 2018-02-23T15:31:12.573 回答
0

我不是 100% 清楚你想要完成什么(见我的评论),但我猜你想要 fromUser() 函数,即

$SugarTimeDate = $TimeDate->fromUser($lead->date_entered);

原因是 Sugar 在调用您的代码时为 GUI 准备数据(包括根据用户偏好格式化日期)。这包括去除秒数。执行上述 fromUser() 函数将根据当前用户配置的日期格式返回一个 SugarDateTime 对象,并将完整的日期字符串作为“日期”属性。反过来,这可以通过使用此标准格式在其他地方处理。

于 2018-02-22T14:40:25.643 回答