- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试显示我们客户的各个时区以及由此得出的本地时间的列表。现在,在我的客户端模型中,我有以下函数 (doAfterFind),它只是 afterFind 的包装,提供一致的格式。
public function doAfterFind($result = array()) {
$result = parent::doAfterFind($result);
if (!empty($result['timezone'])) {
App::uses('CakeTime', 'Utility');
$result['local_time'] = CakeTime::format(
VIEW_DATE_FORMAT,
strtotime('now'),
null,
$result['timezone']
);
}
return $result;
}
local_time
字段已正确放置在模型中的 find() 之后。我也尝试将其实现为虚拟字段,因为它需要进行排序。问题是我不知道如何根据当前时间和客户的时区来计算时间。我在模型的构造函数中尝试了相同的操作,并将其添加到 virtualFields 数组中,但时区在构造函数调用期间不可用 - 因为没有加载 ID 或任何内容。
有谁知道一种方法可以让 MySQL 计算这个,或者使用我已经拥有的但作为与 Paginator sort() 兼容的虚拟字段?我可以格式化 View 中的日期显示,但需要本地时间列可排序。
注释:我的时区存储为区域设置名称(America/New_York 等)。常量 VIEW_DATE_FORMAT 只是 date() 格式字符串 F jS, Y - g:i A
。
最佳答案
假设您对正在使用的服务器有 shell 访问权限,请参阅有关设置 mysql 服务器以便能够根据时区名称进行时区转换的信息:http://blog.mozilla.org/it/2012/11/16/converting-timezone-specific-times-in-mysql/
完成设置后,您应该能够创建虚拟字段:
$this->virtualFields['local_time'] = "CONVERT_TZ(NOW(), 'UTC', Client.timezone)";
(如果您的服务器未设置为 UTC,则必须将第二个参数替换为服务器的时区。)
结果可能不会按照您想要的方式格式化,但您可以在 afterFind
中进行格式化。
关于php - 分页器对 afterFind 字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648096/
因此,当我在相应的模型/ Controller 中时,afterFind 工作得很好。但是,在调用关联模型时,发送到 afterFind 回调的数据的格式不同。这会导致 afterFind 崩溃,因为
laravel 中是否有任何 afterFind() 模型事件,如 cakePHP 中那样,以便我可以在任何搜索查询后格式化数据。或任何其他方式来做到这一点? 谢谢 最佳答案 这不是事件,而是您可以在
我正在使用 afterFind 函数来修改 find 函数中的数据。它工作正常。如果我将 afterFind 函数移动到一个行为中(在插件中),它仍然可以工作,但只有当感兴趣的模型是主要模型时,即当模
我正在尝试显示我们客户的各个时区以及由此得出的本地时间的列表。现在,在我的客户端模型中,我有以下函数 (doAfterFind),它只是 afterFind 的包装,提供一致的格式。 public f
如果我使用 model 的 afterFind 函数根据它们的 GEO 位置调整数据,如下所示: #app/models/product.php function afterFind($result
我有一个 cakePHP 应用程序,它从两个不同的数据库中提取数据,这两个数据库将日期和时间存储在来自不同时区的数据中。一个数据库的时区是 Europe/Berlin,另一个是 Australia/S
我正在尝试在模型上实现一个 afterFind Hook ,但不太清楚语义是什么。我将使用文档和其他 StackOverflow 问题作为指南,从反复试验中总结出以下内容。 我的目标是处理结果(通过应
在sails.js 中,模型支持验证、创建、更新和销毁的生命周期回调。 是否也支持 find() 或 query 的回调?像 beforeFind() 和 afterFind()? 这个想法是一样的。
我有两个模型 User 和 Email。 Email 有一个来自 User 的外键。 电子邮件在数据库中的值在保存到数据库之前被加密。并且在检索电子邮件时对其进行解密。因此,电子邮件在数据库中永远不会
CakePHP 的 Model::afterFind()回调看起来像: afterFind(array $results, boolean $primary = false) 根据文档: The $p
我有两个模型。 Purchase 和 PurchaseDetail 与它们相关联 Purchase.hasMany(models.PurchaseDetail) PurchaseDetail.belo
我试图在模型上运行 afterFind Hook ,但运行查询后,console.log 中的 JSON.stringify 结果似乎没有改变。但是,如果我专门记录该属性,数据就会更改。 // on
我在nodejs中有一个使用sequelize的项目。 我正在尝试在模型中执行 FindAll,但出现此错误: Cannot read property 'findAll' of undefined
我是一名优秀的程序员,十分优秀!