Selaa lähdekoodia

Merge pull request #28 from beeldspraak/add-alias-option-filter

add alias option for filter
Thomas 13 vuotta sitten
vanhempi
commit
20dcd93e9c
3 muutettua tiedostoa jossa 22 lisäystä ja 2 poistoa
  1. 1 1
      Filter/CallbackFilter.php
  2. 1 1
      Filter/Filter.php
  3. 20 0
      Tests/Filter/FilterTest.php

+ 1 - 1
Filter/CallbackFilter.php

@@ -20,7 +20,7 @@ class CallbackFilter extends Filter
      */
      */
     protected function association($queryBuilder, $data)
     protected function association($queryBuilder, $data)
     {
     {
-        return array($queryBuilder->getRootAlias(), false);
+        return array($this->getOption('alias', $queryBuilder->getRootAlias()), false);
     }
     }
 
 
     /**
     /**

+ 1 - 1
Filter/Filter.php

@@ -26,7 +26,7 @@ abstract class Filter extends BaseFilter
 
 
     protected function association($queryBuilder, $value)
     protected function association($queryBuilder, $value)
     {
     {
-        return array($queryBuilder->getRootAlias(), $this->getFieldName());
+        return array($this->getOption('alias', $queryBuilder->getRootAlias()), $this->getFieldName());
     }
     }
 
 
     protected function applyWhere($queryBuilder, $parameter)
     protected function applyWhere($queryBuilder, $parameter)

+ 20 - 0
Tests/Filter/FilterTest.php

@@ -41,6 +41,11 @@ class FilterTest_Filter extends Filter
             'options' => $this->getFieldOptions()
             'options' => $this->getFieldOptions()
         ));
         ));
     }
     }
+
+    public function testAssociation($queryBuilder, $value)
+    {
+        return $this->association($queryBuilder, $value);
+    }
 }
 }
 
 
 class FilterTest extends \PHPUnit_Framework_TestCase
 class FilterTest extends \PHPUnit_Framework_TestCase
@@ -71,6 +76,21 @@ class FilterTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(42, $filter->getValue());
         $this->assertEquals(42, $filter->getValue());
     }
     }
 
 
+    public function testAliasOption()
+    {
+        $filter = new FilterTest_Filter();
+
+        $filter->initialize('field_name', array('alias' => 'association_alias', 'field_name' => 'field_name'));
+
+        $this->assertEquals('association_alias', $filter->getOption('alias'));
+
+        $builder = new QueryBuilder;
+        $this->assertEquals(array('association_alias', 'field_name'), $filter->testAssociation($builder, 'value'));
+
+        $filter->initialize('field_name', array('field_name' => 'field_name'));
+        $this->assertEquals(array($builder->getRootAlias(), 'field_name'), $filter->testAssociation($builder, 'value'));
+    }
+
     /**
     /**
      * @expectedException RuntimeException
      * @expectedException RuntimeException
      */
      */