Pregunta

Estoy usando Propel 1.2 en un proyecto Symfony 1.0, con base de datos PostgreSQL.Puedo usar Criteria::CUSTOM en declaraciones SELECT para usar funciones de Postgres, como esta (búsqueda de texto completo):

`$c = nuevos criterios();

$c->add(MyTablePeer::FULLTEXT_COLUMN, MyTablePeer::FULLTEXT_COLUMN." @@ to_tsquery('inglés', 'texto a buscar')", Criterios::CUSTOM);`

Está bien seleccionar registros, pero ¿qué pasa con INSERTAR?Estoy usando consultas SQL sin formato en este momento, pero me gustaría hacerlo de una manera más elegante.yo vi esto retazo en el sitio web de Symfony pero es mucho código y no se ajusta a mis necesidades. Actuación es muy importante, por lo que tal vez no haya ninguna solución mejor que escribir SQL sin formato.

¿Cómo puedo escribir un configurador personalizado como $object->setFulltextColumn($parameters)?

gracias de antemano

¿Fue útil?

Solución

Para insertar/actualizar la columna de texto completo, ¿por qué no utilizar un activador?Luego, la columna de texto completo se actualizará automáticamente cuando cambie el texto de una fila.

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'
);

Los parámetros para el tsvector_update_trigger procedimiento son:nombre de la columna de texto completo de tsvector, configuración de idioma y luego los nombres de todas las columnas a indexar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top