File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44use Packaged \QueryBuilder \Clause \SetClause ;
55use Packaged \QueryBuilder \Predicate \EqualPredicate ;
66use Packaged \QueryBuilder \Statement \IStatement ;
7+ use function is_array ;
78
89trait SetTrait
910{
@@ -19,7 +20,17 @@ public function set($field, $value)
1920 $ this ->addClause ($ set );
2021 }
2122
22- $ set ->addPredicate (EqualPredicate::create ($ field , $ value )->forceOperator ());
23+ if (is_array ($ value ))
24+ {
25+ foreach ($ value as $ exp )
26+ {
27+ $ set ->addPredicate (EqualPredicate::create ($ field , $ exp )->forceOperator ());
28+ }
29+ }
30+ else
31+ {
32+ $ set ->addPredicate (EqualPredicate::create ($ field , $ value )->forceOperator ());
33+ }
2334
2435 return $ this ;
2536 }
Original file line number Diff line number Diff line change 33
44use Packaged \QueryBuilder \Assembler \CQL \CqlAssembler ;
55use Packaged \QueryBuilder \Builder \CQL \CqlQueryBuilder ;
6+ use Packaged \QueryBuilder \Expression \DecrementExpression ;
7+ use Packaged \QueryBuilder \Expression \IncrementExpression ;
68
79class CqlUpdateStatementTest extends \PHPUnit_Framework_TestCase
810{
@@ -22,6 +24,30 @@ public function testUpdate()
2224 $ this ->assertEquals (['value1 ' ], $ assembler ->getParameters ());
2325 }
2426
27+ public function testUpdateInitCounter ()
28+ {
29+ $ stmt = CqlQueryBuilder::update (
30+ 'tbl ' ,
31+ [
32+ 'counter ' => [
33+ IncrementExpression::create ('counter ' , 1 ),
34+ DecrementExpression::create ('counter ' , 2 ),
35+ ],
36+ ]
37+ );
38+ $ this ->assertEquals (
39+ 'UPDATE "tbl" SET "counter" = "counter" + 1, "counter" = "counter" - 2 ' ,
40+ CqlAssembler::stringify ($ stmt )
41+ );
42+
43+ $ assembler = new CqlAssembler ($ stmt );
44+ $ this ->assertEquals (
45+ 'UPDATE "tbl" SET "counter" = "counter" + ?, "counter" = "counter" - ? ' ,
46+ $ assembler ->getQuery ()
47+ );
48+ $ this ->assertEquals ([1 , 2 ], $ assembler ->getParameters ());
49+ }
50+
2551 public function testUpdateTtl ()
2652 {
2753 $ stmt = CqlQueryBuilder::update ('tbl ' , ['field1 ' => 'value1 ' ])
You can’t perform that action at this time.
0 commit comments