Impulse Setter personalizado con elementos específicos de SQL
-
21-08-2019 - |
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
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.