Jak wstawić punkt przestrzenny mysql za pomocą modelu yii?

Mam typ modelu, który został wygenerowany z tabeli mysql, która ma dane adresowe, a także przestrzennePOINT pole o nazwie „współrzędne”. Kiedy model jest tworzony lub aktualizowany, chcę geokodować adres i zapisać współrzędne szerokości i długości geograficznej wPOINT pole.

Rozumiem, że sposobem na to jest geokodowanie adresu w modelubeforeSave metoda. Zrobiłem to i mam współrzędne w tablicy asocjacyjnej. Teraz moje pytanie brzmi: jak mogę umieścić te dane w moim polu współrzędnych? Oto, co próbuję:

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();
}

Gdy to zrobię, pojawia się następujący błąd:

CDbCommand nie może wykonać instrukcji SQL: SQLSTATE [HY093]: Niepoprawny numer parametru: liczba powiązanych zmiennych nie odpowiada liczbie tokenów. Wykonana instrukcja SQL: INSERT INTOplace (city, state, name, street, postal_code, phone, created, coordinates) VALUES (: yp0,: yp1,: yp2,: yp3,: yp4,: yp5, UTC_TIMESTAMP (), GeomFromText ('POINT (: lat: lng)'))

questionAnswers(2)

yourAnswerToTheQuestion