我有一个从具有地址数据,也是一个空间的一个MySQL表生成模型类型POINT
名为“坐标”字段。 当创建或更新一个模式,我要进行地址解析地址和纬度和经度坐标存储在POINT
领域。
我的理解是这样做是在模型中的地理编码地址的方式beforeSave
方法。 我已经做到了这一点,并在关联数组的坐标。 现在的问题是我怎么能插入这个数据到我的坐标场? 这就是我想:
public function beforeSave()
{
$singleLineAddress = $this->getSingleLineAddress();
$coords = Geocoder::getCoordinates($singleLineAddress);
// WORKS: using the following line works to insert POINT(0 0)
//$this->coordinates = new CDbExpression("GeomFromText('POINT(0 0)')");
// DOESN'T WORK: using the following line gives an error
$this->coordinates = new CDbExpression("GeomFromText('POINT(:lat :lng)')",
array(':lat' => $coords['lat'], ':lng' => $coords['lng'] ));
return parent::beforeSave();
}
当我这样做,我得到了以下错误:
CDbCommand未能执行SQL语句:SQLSTATE [HY093]:无效的参数编号:绑定变量的数量不匹配的令牌数量。 执行的SQL语句是:INSERT INTO
place
(city
,state
,name
,street
,postal_code
,phone
,created
,coordinates
)VALUES(:YP0,:YP1,:YP2,:YP3,:YP4,:yp5,UTC_TIMESTAMP() GeomFromText( 'POINT(:纬度:LNG)'))