/** * Build a proper WHERE and return it * * @example * <code> * $array = ($verb, $field, $operator, $value, $type); * $this->build_where($array); * </code> * * @return VOID * * @since 2016-09-28 * @author Jim Harney <*****@*****.**> * @author Wesley Dekkers <*****@*****.**> **/ public function build_where($rule, $verb = true) { $field = \PDope\Utilities::escape_mysql_identifier($rule->field); $operator = $rule->operator; $token = $rule->token; if (is_object($rule)) { $field = \PDope\Utilities::escape_mysql_identifier($rule->field); $operator = $rule->operator; $token = $rule->token; if ($verb) { $sql .= " {$rule->verb} "; } if (is_array($token) && $operator == 'BETWEEN') { if (\PDope\Utilities::is_special_type($rule->type)) { throw new \Exception("PDopeCustomWhereBuilder get_where(), array, does not support special type [{$rule->type}]"); } $token_list = implode(", ", $token); $sql .= " {$field} {$operator} {$token[0]} AND {$token[1]}"; } elseif (is_array($token)) { if (\PDope\Utilities::is_special_type($rule->type)) { throw new \Exception("PDopeCustomWhereBuilder get_where(), array, does not support special type [{$rule->type}]"); } $token_list = implode(", ", $token); $sql .= "({$field} {$operator} ({$token_list}))"; } else { $token = \PDope\Utilities::translate_special_token($token, $rule->type); $sql .= "({$field} {$operator} {$token})"; } } return $sql; }
/** * transforms query results that should be booleans to boolean literals from * 0 or 1 tinyints. * * @return array * * @since 2016-7-18 * @author Matthew Ess <*****@*****.**> **/ private function transform_boolean_values($results) { foreach ($results as $result) { foreach ($this->model_object->get_data_properties() as $property) { if (\PDope\Utilities::get_pdo_type_from_generic_type($property->get_type()) == \PDO::PARAM_BOOL) { $property_name = $property->name; $result->{$property_name} = \Rhonda\Boolean::evaluate($result->{$property_name}); } } } return $results; }