Quellcode durchsuchen

Fix #143 - Query error on non standard identifier key

Thomas Rabaix vor 14 Jahren
Ursprung
Commit
8d825721ea
3 geänderte Dateien mit 6 neuen und 5 gelöschten Zeilen
  1. 3 1
      Builder/ORM/DatagridBuilder.php
  2. 1 1
      Datagrid/ORM/Pager.php
  3. 2 3
      Datagrid/Pager.php

+ 3 - 1
Builder/ORM/DatagridBuilder.php

@@ -204,11 +204,13 @@ class DatagridBuilder implements DatagridBuilderInterface
         $queryBuilder = $admin->getModelManager()->createQuery($admin->getClass());
         $queryBuilder = $admin->getModelManager()->createQuery($admin->getClass());
 
 
         $query = new ProxyQuery($queryBuilder);
         $query = new ProxyQuery($queryBuilder);
+        $pager = new Pager;
+        $pager->setCountColumn($admin->getModelManager()->getIdentifierFieldNames($admin->getClass()));
 
 
         return new Datagrid(
         return new Datagrid(
             $query,
             $query,
             $admin->getList(),
             $admin->getList(),
-            new Pager,
+            $pager,
             $this->formFactory,
             $this->formFactory,
             $values
             $values
         );
         );

+ 1 - 1
Datagrid/ORM/Pager.php

@@ -37,7 +37,7 @@ class Pager extends BasePager
             $countQuery->setParameters($this->getParameters());
             $countQuery->setParameters($this->getParameters());
         }
         }
 
 
-        $countQuery->select(sprintf('DISTINCT count(%s.%s) as cnt', $countQuery->getRootAlias(), $this->getCountColumn()));
+        $countQuery->select(sprintf('DISTINCT count(%s.%s) as cnt', $countQuery->getRootAlias(), current($this->getCountColumn())));
 
 
         return $countQuery->getSingleScalarResult();
         return $countQuery->getSingleScalarResult();
     }
     }

+ 2 - 3
Datagrid/Pager.php

@@ -33,7 +33,7 @@ abstract class Pager implements \Iterator, \Countable, \Serializable, PagerInter
     protected $results = null;
     protected $results = null;
     protected $resultsCounter = 0;
     protected $resultsCounter = 0;
     protected $query            = null;
     protected $query            = null;
-    protected $countColumn      = 'id';
+    protected $countColumn      = array('id');
 
 
     /**
     /**
      * Constructor.
      * Constructor.
@@ -572,11 +572,10 @@ abstract class Pager implements \Iterator, \Countable, \Serializable, PagerInter
 
 
     public function getCountColumn()
     public function getCountColumn()
     {
     {
-
         return $this->countColumn;
         return $this->countColumn;
     }
     }
 
 
-    public function setCountColumn($countColumn) {
+    public function setCountColumn(array $countColumn) {
 
 
         return $this->countColumn = $countColumn;
         return $this->countColumn = $countColumn;
     }
     }