Browse Source

Using Group By instead of Distinct as it has less shortcomings

Jose Lorenzo Rodriguez 11 years ago
parent
commit
42f28c3260

+ 1 - 13
src/ORM/Association/SelectableAssociationTrait.php

@@ -241,19 +241,7 @@ trait SelectableAssociationTrait
         }
 
         $fields = $query->aliasFields($keys, $this->source()->alias());
-        $filterQuery->select($fields, true)->distinct();
-
-        $order = $filterQuery->clause('order');
-        if ($order) {
-            $order->iterateParts(function ($dir, $field) use ($filterQuery) {
-                $col = is_int($field) ? $dir : $field;
-                if (!($col instanceof ExpressionInterface)) {
-                    $filterQuery->select(new IdentifierExpression($col));
-                }
-                return $dir;
-            });
-        }
-
+        $filterQuery->select($fields, true)->group(array_values($fields));
         return $filterQuery;
     }
 

+ 4 - 1
tests/TestCase/ORM/QueryRegressionTest.php

@@ -461,7 +461,10 @@ class QueryRegressionTest extends TestCase
         $table = TableRegistry::get('Articles');
         $table->addBehavior('Translate', ['fields' => ['title', 'body']]);
         $table->locale('eng');
-        $query = $table->find('translations')->limit(10)->offset(1);
+        $query = $table->find('translations')
+            ->order(['Articles.id' => 'ASC'])
+            ->limit(10)
+            ->offset(1);
         $result = $query->toArray();
         $this->assertCount(2, $result);
     }