【问题标题】:How do I convert mysql spatial POINT into a readable format in a yii model?如何在 yii 模型中将 mysql 空间 POINT 转换为可读格式?
【发布时间】:2012-09-21 23:24:25
【问题描述】:

我有一个基于带有空间POINT 字段的mysql 表的yii 模型。查看此模型的记录时,我想以“55.0000,-89.5000”的格式显示坐标。 在默认生成的 CRUD 视图中,目前该字段不显示任何内容。

我想我必须以某种方式使用 mysql AsText 函数,也许在 beforeFind() 中?

我该怎么做?

更新

我发现我可以使用以下命令将值打印为“POINT(55.0000, -89.5000)”:

public function beforeFind()
{
    parent::beforeFind();

    $criteria = new CDbCriteria();
    $criteria->select = "AsText(coordinates) AS coordinates";
    $this->dbCriteria->mergeWith($criteria);
}

但是,这具有导致所有其他字段“未设置”的不幸副作用。

【问题讨论】:

    标签: mysql yii geospatial spatial


    【解决方案1】:

    我猜$criteria->select 的默认值是"*"。通过设置$criteria->select = "AsText(coordinates) AS coordinates",我写完了*,因此只返回单列。所以我所做的是更改行以手动指定除坐标列之外的其他列:

    $criteria->select = "id,name,street,city,AsText(coordinates) AS coordinates";
    

    不确定这是否是理想的方式,但它对我有用。我相信这与您在选择中使用其他数据库函数所必须做的事情相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-21
      • 2022-01-13
      • 1970-01-01
      • 2022-12-10
      • 2020-04-12
      • 1970-01-01
      • 2019-08-19
      • 2022-01-22
      相关资源
      最近更新 更多