瀏覽代碼

Fix #143 - Query error on non standard identifier key

Thomas Rabaix 14 年之前
父節點
當前提交
8d825721ea
共有 3 個文件被更改,包括 6 次插入5 次删除
  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());
 
         $query = new ProxyQuery($queryBuilder);
+        $pager = new Pager;
+        $pager->setCountColumn($admin->getModelManager()->getIdentifierFieldNames($admin->getClass()));
 
         return new Datagrid(
             $query,
             $admin->getList(),
-            new Pager,
+            $pager,
             $this->formFactory,
             $values
         );

+ 1 - 1
Datagrid/ORM/Pager.php

@@ -37,7 +37,7 @@ class Pager extends BasePager
             $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();
     }

+ 2 - 3
Datagrid/Pager.php

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