【发布时间】:2020-04-21 23:50:14
【问题描述】:
我正在为带有一些 POINT 列的数据库设置系统。我使用食谱示例构建了一个自定义类型,它似乎正在工作。但是,要处理POINTs,我需要以特殊方式SELECT:
SELECT ST_AsText(location) as location ...
查询生成器并不难:
$this->Houses->find()->select(['location' => 'ST_AsText(location)'])
但是,我希望默认情况下发生这种情况。
我正在考虑使用beforeFind 事件,但我找不到以下伪代码的正确函数:
public function beforeFind(Event $event, Query $query, ArrayObject $options, $primary)
{
if 'location' in query->getSelectedFields():
replace 'location' by 'location' => 'ST_AsText(location)'
}
当要包含字段时,如何将字段替换为函数? 理想情况下,即使我还没有从控制器调用 ->select(...)。
关于 CakePHP 话语的较早的类似问题: https://discourse.cakephp.org/t/read-data-from-spatial-mysql-field-point-polygon/2124
【问题讨论】:
标签: cakephp orm model cakephp-3.0