RedBeanPHP\QueryWriter\AQueryWriter::makeSQLFromConditions PHP Method

makeSQLFromConditions() private method

array( key => array( value1, value2, value3 .... ) )
private makeSQLFromConditions ( array $conditions, array &$bindings, string $addSql = '' ) : string
$conditions array list of conditions
$bindings array parameter bindings for SQL snippet
$addSql string additional SQL snippet to append to result
return string
    private function makeSQLFromConditions($conditions, &$bindings, $addSql = '')
    {
        reset($bindings);
        $firstKey = key($bindings);
        $paramTypeIsNum = is_numeric($firstKey);
        $counter = 0;
        $sqlConditions = array();
        foreach ($conditions as $column => $values) {
            if (!count($values)) {
                continue;
            }
            $sql = $this->esc($column);
            $sql .= ' IN ( ';
            if (!is_array($values)) {
                $values = array($values);
            }
            if ($paramTypeIsNum) {
                $sql .= implode(',', array_fill(0, count($values), '?')) . ' ) ';
                array_unshift($sqlConditions, $sql);
                foreach ($values as $k => $v) {
                    $values[$k] = strval($v);
                    array_unshift($bindings, $v);
                }
            } else {
                $slots = array();
                foreach ($values as $k => $v) {
                    $slot = ':slot' . $counter++;
                    $slots[] = $slot;
                    $bindings[$slot] = strval($v);
                }
                $sql .= implode(',', $slots) . ' ) ';
                $sqlConditions[] = $sql;
            }
        }
        $sql = '';
        if (is_array($sqlConditions) && count($sqlConditions) > 0) {
            $sql = implode(' AND ', $sqlConditions);
            $sql = " WHERE ( {$sql} ) ";
            if ($addSql) {
                $sql .= $addSql;
            }
        } elseif ($addSql) {
            $sql = $addSql;
        }
        return $sql;
    }