فهرست منبع

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

Thomas Rabaix 14 سال پیش
والد
کامیت
24daaa2d2b
2فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  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)));
     }
 
     /**