Operationen & Funktionen

Operationen und Funktionen sind als Statement abgebildet und können somit an vielen Stellen zum Einsatz kommen.

Operationen

Operatoren erlauben die einfache Erstellung von SQL-Queries mit richtiger Darstellung der Werte und Operatoren. Die einzelnen Klassen erwarten je nach Operator ein, zwei oder mehrere Operanden. Operanden können unterschiedliche Typen haben.

$operation=new \Alvine\Persistence\Relation\SQL\Operation\AndOperation(
    true, true);

echo (string) $operation;
// -> TRUE AND TRUE

$operation=new \Alvine\Persistence\Relation\SQL\Operation\AndOperation(
    'A', true);

echo (string) $operation;
// -> 'A' AND TRUE

$operation=new \Alvine\Persistence\Relation\SQL\Operation\AndOperation(
    new \Alvine\Persistence\Relation\Field\Varchar('mytable', 'a', null, 'myalias'),
    new \Alvine\Persistence\Relation\Field\Varchar('mytable', 'b', null, 'myalias'),
    new \Alvine\Persistence\Relation\Field\Varchar('mytable', 'c', null, 'myalias'));

echo (string) $operation;
// ->`mytable`.`a` AND `mytable`.`b` AND `mytable`.`c`

Operationen lassen sich auch verschachteln.

$operationA=new \Alvine\Persistence\Relation\SQL\Operation\AndOperation(
    'A', 'B');

$operationB=new \Alvine\Persistence\Relation\SQL\Operation\AndOperation(
    'C', 'D', 'E');

$operation=new \Alvine\Persistence\Relation\SQL\Operation\OrOperation($operationA, $operationB);

echo (string) $operation;
// -> ('A' AND 'B') OR ('C' AND 'D' AND 'E')

Vergleiche können mit der Equal Funktion definiert werden.

$operation=new \Alvine\Persistence\Relation\SQL\Operation\OrOperation(
    new \Alvine\Persistence\Relation\SQL\Operation\Equal(new \Alvine\Persistence\Relation\Field\Varchar('myTable', 'fieldA'), 1),
    new \Alvine\Persistence\Relation\SQL\Operation\Equal(new \Alvine\Persistence\Relation\Field\Varchar('myTable', 'fieldB'), null),
    new \Alvine\Persistence\Relation\SQL\Operation\Equal(new \Alvine\Persistence\Relation\Field\Varchar('myTable', 'fieldC'), 'Mein Wert'),
    new \Alvine\Persistence\Relation\SQL\Operation\Equal(new \Alvine\Persistence\Relation\Field\Varchar('myTable', 'fieldD'), 0));

echo (string) $operation;
// -> (`myTable`.`fieldA`=1) OR (`myTable`.`fieldB`=NULL) OR (`myTable`.`fieldC`='Mein Wert') OR (`myTable`.`fieldD`=0)

Funktionen

Identisch zu den Operatoren funktionieren die Funktionen. Die einzelnen funktionen erwarten je nach Funktion unterschiedlich viele Argumente.

$function=new \Alvine\Persistence\Relation\SQL\Functions\FindInSet(2, '1,2,3,4');

echo (string) $function;
// -> FIND_IN_SET(2,'1,2,3,4')

$function=new \Alvine\Persistence\Relation\SQL\Functions\Concat('A','B','C','D', null, true);

echo (string) $function;
// -> CONCAT('A','B','C','D',NULL,TRUE)

$function=new \Alvine\Persistence\Relation\SQL\Functions\Lower('A');

echo (string) $function;
// -> LOWER('A')