members[] = $left; $this->members[] = $right; } public function getMembers() { return $this->members; } public function getQuery($field = '_all') { $rules = array(); foreach ($this->members as $member) { $rules[] = $member->getQuery($field); } return array( 'bool' => array( 'must' => count($rules) > 1 ? $rules : $rules[0] ) ); } public function __toString() { return sprintf('(%s)', implode(' AND ', $this->members)); } }