2011-10-14 48 views
3

我與Doctrine2工作,並有包含代表WKT幾何字符串屬性的實體:透明地執行SQ​​L函數加載/保存在教義場2

class Entity { 
    /** @Column(type="string") */ 
    protected $wkt; 
} 

我想有本場透明地保存到GEOMETRY領域在數據庫中,這樣:

INSERT INTO ... VALUES(GeomFromText(?)) 
SELECT AsText(field) FROM ... 

我看看custom mapping types,卻找不到在哪裏應用這樣的SQL函數。

有什麼想法?

+1

只是爲了澄清,你希望每當另一個字段被修改時更新數據庫中的字段?我不太熟悉Doctrine,但你可以使用[triggers](http://dev.mysql.com/doc/refman/5.1/en/triggers.html)。 –

+0

不,實際上我只需要在堅持/保溼實體時在WKT(文本)和幾何(二進制)之間進行透明轉換!數據庫使用GeomFromText()和AsText()SQL函數處理它。 – Benjamin

回答

0

也許你可以看看LifecycleCallbacks

/** 
* @PrePersist 
*/ 
public function sendOptinMail() { 
    //do sql query : SELECT GeoFromText()... 
    $this->yourField = ... 
} 

,然後將字段設置爲返回值。

+0

這將意味着將數據庫注入到我的模型中,這是我想要避免的,並且不會提供檢索值的解決方案! – Benjamin