hasFilter() final public method

final public hasFilter ( ) : boolean
return boolean
示例#1
0
 /**
  * Evaluates the join segment values and filter upon the supplied traversable.
  *
  * @param ITraversable                       $traversable
  * @param Common\Join\Options                $join
  * @param Queries\IResolvedParameterRegistry $resolvedParameters
  *
  * @return \Pinq\Interfaces\IJoiningToTraversable
  */
 public static function evaluateJoinOptions(ITraversable $traversable, Common\Join\Options $join, Queries\IResolvedParameterRegistry $resolvedParameters)
 {
     $values = self::evaluateSource($join->getSource(), $resolvedParameters);
     $joiningTraversable = $join->isGroupJoin() ? $traversable->groupJoin($values) : $traversable->join($values);
     if ($join->hasFilter()) {
         $filter = $join->getFilter();
         if ($filter instanceof Common\Join\Filter\Custom) {
             $joiningTraversable = $joiningTraversable->on($resolvedParameters[$filter->getOnFunction()->getCallableId()]);
         } elseif ($filter instanceof Common\Join\Filter\Equality) {
             $joiningTraversable = $joiningTraversable->onEquality($resolvedParameters[$filter->getOuterKeyFunction()->getCallableId()], $resolvedParameters[$filter->getInnerKeyFunction()->getCallableId()]);
         }
     }
     if ($join->hasDefault()) {
         $joiningTraversable = $joiningTraversable->withDefault($resolvedParameters[$join->getDefaultValueId()], $resolvedParameters[$join->getDefaultKeyId()]);
     }
     return $joiningTraversable;
 }
示例#2
0
 public function appendJoinOptions(Queries\Common\Join\Options $joinOptions)
 {
     $this->appendSource($joinOptions->getSource());
     if ($joinOptions->isGroupJoin()) {
         $this->append(' into groups');
     }
     if ($joinOptions->hasFilter()) {
         $this->append(' filtered according to: ');
         $filter = $joinOptions->getFilter();
         if ($filter instanceof Queries\Common\Join\Filter\Custom) {
             $this->appendFunction($filter->getOnFunction());
         } elseif ($filter instanceof Queries\Common\Join\Filter\Equality) {
             $this->appendFunction($filter->getOuterKeyFunction());
             $this->append(' equaling ');
             $this->appendFunction($filter->getInnerKeyFunction());
         }
     }
     if ($joinOptions->hasDefault()) {
         $this->append(' with default values');
     }
 }