ppazos / yupp

Automatically exported from code.google.com/p/yupp
0 stars 0 forks source link

Error en consulta con deleted true or false #109

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Haciendo una consulta para obtener tanto los elementos eliminados de forma 
lógica, como los elementos activos, necesito una consulta que tenga 
deleted=true OR deleted=false.

Por ejemplo, para esta consulta, se obtiene una sintaxis SQL incorrecta:

 $tableName = YuppConventions::tableName( 'Module' );
 $cond = Condition::_OR()
           ->add( Condition::EQ($tableName, 'deleted', true) )
           ->add( Condition::EQ($tableName, 'deleted', false) );

 $modules = Module::findBy( $cond, $this->params );

SELECT *
FROM cms_module
WHERE (
  (...) AND
  (cms_module.deleted=1 OR cms_module.deleted=))
ORDER BY id asc LIMIT 50 OFFSET 0

Notar que en lugar de decir deleted=0 dice deleted=. Esto debe ser un error en 
PersistentManager, cuando se fija si la consulta trae una condición para 
delete y el valor es true, ahí saca la condición de deleted false. También 
podría ser algo en DAL o en MySQLDatabase.

Si es en MySQLDatabase, es necesario también corregir los errores en los 
demás conectores de PostgreSQL y SQLite.

Original issue reported on code.google.com by pablo.swp@gmail.com on 23 May 2011 at 3:45

GoogleCodeExporter commented 8 years ago
Está corregido, el problema era en el método evaluateReferenceValue de cada 
driver de DBMS (DatabaseMySQL, DatabaseSQLite, etc), que para el valor booleano 
false no ponía correctamente el valor en la consulta.

Original comment by pablo.swp@gmail.com on 6 Jun 2011 at 12:39