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')