Browse Source

Fix query generation for batch elements, selected elements have precedence over 'all elements' selection

Thomas Rabaix 14 years ago
parent
commit
24daaa2d2b
2 changed files with 5 additions and 2 deletions
  1. 1 1
      Controller/CRUDController.php
  2. 4 1
      Model/ORM/ModelManager.php

+ 1 - 1
Controller/CRUDController.php

@@ -284,7 +284,7 @@ class CRUDController extends Controller
         $datagrid->buildPager();
         $query = $datagrid->getQuery();
 
-        if (!$all_elements && count($idx) > 0) {
+        if (count($idx) > 0) {
             $this->admin->getModelManager()->addIdentifiersToQuery($this->admin->getClass(), $query, $idx);
         }
 

+ 4 - 1
Model/ORM/ModelManager.php

@@ -206,6 +206,7 @@ class ModelManager implements ModelManagerInterface
         $qb = $queryProxy->getQueryBuilder();
 
         $prefix = uniqid();
+        $sqls = array();
         foreach ($idx as $pos => $id) {
             $ids     = explode('-', $id);
 
@@ -216,8 +217,10 @@ class ModelManager implements ModelManagerInterface
                 $qb->setParameter($parameterName, $ids[$posName]);
             }
 
-            $qb->orWhere(implode(' AND ', $ands));
+            $sqls[] = implode(' AND ', $ands);
         }
+
+        $qb->andWhere(sprintf('( %s )', implode(' OR ', $sqls)));
     }
 
     /**