3

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

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

我怎样才能做到这一点?

更新

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

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

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

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

4

1 回答 1

2

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

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

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

于 2012-09-22T01:22:56.220 回答