Ejemplo n.º 1
0
 public function detectCallableForField(FieldInterface $field)
 {
     $type = null;
     if (!$field instanceof DbField) {
         return false;
     }
     if ($field->isType('manytomany')) {
         /* @var $field \Dewdrop\Db\ManyToMany\Field */
         $filter = new ManyToManyFilter($field->getManyToManyRelationship());
     } else {
         if ($field->isType('reference')) {
             $type = 'Reference';
         } elseif ($field->isType('boolean')) {
             $type = 'Boolean';
         } elseif ($field->isType('date', 'timestamp')) {
             $type = 'Date';
         } elseif ($field->isType('integer', 'float')) {
             $type = 'Numeric';
         } elseif ($field->isType('clob', 'text')) {
             $type = 'Text';
         } else {
             return false;
         }
         if ($field instanceof EavField) {
             $tableName = $field->getName();
             $fieldName = 'value';
         } else {
             $tableName = $field->getTable()->getTableName();
             $fieldName = $field->getName();
         }
         $className = '\\Dewdrop\\Db\\Select\\Filter\\' . $type;
         $filter = new $className($tableName, $fieldName);
     }
     return function ($helper, $select, $conditionSetName, $queryVars) use($filter) {
         return $filter->apply($select, $conditionSetName, $queryVars);
     };
 }