gpt4 book ai didi

postgresql - Yii 与 PostGis,选择经度和纬度

转载 作者:行者123 更新时间:2023-11-29 13:35:02 25 4
gpt4 key购买 nike

我在我的应用程序中将 Yii 与 PostgreSQL 和 PostGIS 一起使用。我有一个带有字段“位置”的模型“用户”。位置字段的内容对人类来说毫无意义,但 Postgres 可以转换位置字段的值并使用 ST_asText 方法将其转换为经度和纬度。我在我的模型中为经度和纬度创建了虚拟字段。当我保存我的模型时,我使用 beforeSave 和 afterSave 方法将位置设置为正确的值。

我现在的问题是我希望在创建模型时填充纬度和经度虚拟字段(使用数据库中的现有对象)。我在想可能有类似 beforeSelect 和 afterSelect 的东西,我可以用它来为查询附加一个额外的计算列,因此能够在查询运行后处理从该额外列返回的值。

这有可能吗?

最佳答案

我很容易就解决了这个问题。我在 CActiveRecord 类中寻找 beforeSelect 和 afterSelect 方法,而我本应寻找 beforeFind 和 afterFind。

这是我是如何做到的。欢迎任何改进建议:)

public function beforeFind(){
$criteria = new CDbCriteria;
$criteria->select = "*,ST_asText(location) as location";
$this->dbCriteria->mergeWith($criteria);
return parent::beforeFind();
}

public function afterFind(){
$location = str_replace('POINT(','',$this->location);
$location = str_replace(')','',$location);
$location = explode(" ", $location);

$this->lon = $location[0];
$this->lat = $location[1];
return parent::afterFind();
}

关于postgresql - Yii 与 PostGis,选择经度和纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com