Cake\Database\Expression\TupleComparison::sql PHP Method

sql() public method

Convert the expression into a SQL fragment.
public sql ( ValueBinder $generator ) : string
$generator Cake\Database\ValueBinder Placeholder generator object
return string
    public function sql(ValueBinder $generator)
    {
        $template = '(%s) %s (%s)';
        $fields = [];
        $originalFields = $this->getField();
        if (!is_array($originalFields)) {
            $originalFields = [$originalFields];
        }
        foreach ($originalFields as $field) {
            $fields[] = $field instanceof ExpressionInterface ? $field->sql($generator) : $field;
        }
        $values = $this->_stringifyValues($generator);
        $field = implode(', ', $fields);
        return sprintf($template, $field, $this->_operator, $values);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * Tests that a single ExpressionInteface can be used as the field for
  * comparison
  *
  * @return void
  */
 public function testFieldAsSingleExpression()
 {
     $value = [1, 1];
     $f = new TupleComparison(new QueryExpression('a, b'), $value);
     $binder = new ValueBinder();
     $this->assertEquals('(a, b) = (:c0, :c1)', $f->sql($binder));
 }