2009-07-01 21 views
0

我在一個Symfony 1.0項目中使用Propel 1.2,PostgreSQL數據庫。我可以在SELECT語句中使用Criteria :: CUSTOM來使用Postgres函數,像這樣(全文搜索):推進自定義Setter與SQL特定的東西

`$ c = new Criteria();

$ C->添加(MyTablePeer :: FULLTEXT_COLUMN,MyTablePeer :: FULLTEXT_COLUMN 「@@ to_tsquery( '英語', '文本搜索')」,標準:: CUSTOM);`

這是確定用於選擇記錄,但是INSERT的內容呢?目前我正在使用原始SQL查詢,但我希望以更優雅的方式進行操作。 我在Symfony的網站上看到了這個snippet,但它有很多代碼,並不符合我的需求。 性能是非常重要的,所以也許沒有比編寫原始SQL更好的解決方案。

我該如何編寫像$ object-> setFulltextColumn($ parameters)這樣的自定義setter?

謝謝您提前

回答

0

對於全文列插入/更新,爲什麼不使用觸發器? 然後,當您更改行的文本時,全文列將自動更新。

CREATE TRIGGER my_table_fulltext_trigger 
BEFORE INSERT OR UPDATE ON my_table 
FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(
    'fulltext', 
    'pg_catalog.english', 
    'column_with_text_1', 
    'column_with_text_2', 
    'column_with_text_N' 
); 

tsvector_update_trigger過程的參數是:全文的tsvector列,語言配置,然後將所有的列索引的名字 名。

+0

好的,觸發器將是解決方案,但它是原始SQL,正如我所說的,沒有Propel技巧適合這種情況。 謝謝! – danieli 2009-08-03 06:55:31