@@ -56,6 +56,94 @@ protected function tearDown(): void
5656 m::close ();
5757 }
5858
59+ public function testWhereValueBetween ()
60+ {
61+ $ builder = $ this ->getBuilder ();
62+ $ builder ->select ('* ' )->from ('users ' )->whereValueBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
63+ $ this ->assertSame ('select * from "users" where ? between "created_at" and "updated_at" ' , $ builder ->toSql ());
64+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
65+
66+ $ builder = $ this ->getBuilder ();
67+ $ builder ->select ('* ' )->from ('users ' )->whereValueBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
68+ $ this ->assertSame ('select * from "users" where ? between "created_at" and "updated_at" ' , $ builder ->toSql ());
69+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
70+
71+ $ builder = $ this ->getBuilder ();
72+ $ builder ->select ('* ' )->from ('users ' )->whereValueBetween ('2020-01-01 19:30:00 ' , [new Raw (1 ), new Raw (2 )]);
73+ $ this ->assertSame ('select * from "users" where ? between 1 and 2 ' , $ builder ->toSql ());
74+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
75+
76+ $ builder = $ this ->getBuilder ();
77+ $ builder ->select ('* ' )->from ('users ' )->whereValueBetween (new Raw (1 ), ['created_at ' , 'updated_at ' ]);
78+ $ this ->assertSame ('select * from "users" where 1 between "created_at" and "updated_at" ' , $ builder ->toSql ());
79+ }
80+
81+ public function testOrWhereValueBetween ()
82+ {
83+ $ builder = $ this ->getBuilder ();
84+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
85+ $ this ->assertSame ('select * from "users" where "id" = ? or ? between "created_at" and "updated_at" ' , $ builder ->toSql ());
86+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
87+
88+ $ builder = $ this ->getBuilder ();
89+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
90+ $ this ->assertSame ('select * from "users" where "id" = ? or ? between "created_at" and "updated_at" ' , $ builder ->toSql ());
91+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
92+
93+ $ builder = $ this ->getBuilder ();
94+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueBetween ('2020-01-01 19:30:00 ' , [new Raw (1 ), new Raw (2 )]);
95+ $ this ->assertSame ('select * from "users" where "id" = ? or ? between 1 and 2 ' , $ builder ->toSql ());
96+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
97+
98+ $ builder = $ this ->getBuilder ();
99+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueBetween (new Raw (1 ), ['created_at ' , 'updated_at ' ]);
100+ $ this ->assertSame ('select * from "users" where "id" = ? or 1 between "created_at" and "updated_at" ' , $ builder ->toSql ());
101+ }
102+
103+ public function testWhereValueNotBetween ()
104+ {
105+ $ builder = $ this ->getBuilder ();
106+ $ builder ->select ('* ' )->from ('users ' )->whereValueNotBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
107+ $ this ->assertSame ('select * from "users" where ? not between "created_at" and "updated_at" ' , $ builder ->toSql ());
108+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
109+
110+ $ builder = $ this ->getBuilder ();
111+ $ builder ->select ('* ' )->from ('users ' )->whereValueNotBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
112+ $ this ->assertSame ('select * from "users" where ? not between "created_at" and "updated_at" ' , $ builder ->toSql ());
113+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
114+
115+ $ builder = $ this ->getBuilder ();
116+ $ builder ->select ('* ' )->from ('users ' )->whereValueNotBetween ('2020-01-01 19:30:00 ' , [new Raw (1 ), new Raw (2 )]);
117+ $ this ->assertSame ('select * from "users" where ? not between 1 and 2 ' , $ builder ->toSql ());
118+ $ this ->assertEquals ([0 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
119+
120+ $ builder = $ this ->getBuilder ();
121+ $ builder ->select ('* ' )->from ('users ' )->whereValueNotBetween (new Raw (1 ), ['created_at ' , 'updated_at ' ]);
122+ $ this ->assertSame ('select * from "users" where 1 not between "created_at" and "updated_at" ' , $ builder ->toSql ());
123+ }
124+
125+ public function testOrWhereValueNotBetween ()
126+ {
127+ $ builder = $ this ->getBuilder ();
128+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueNotBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
129+ $ this ->assertSame ('select * from "users" where "id" = ? or ? not between "created_at" and "updated_at" ' , $ builder ->toSql ());
130+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
131+
132+ $ builder = $ this ->getBuilder ();
133+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueNotBetween ('2020-01-01 19:30:00 ' , ['created_at ' , 'updated_at ' ]);
134+ $ this ->assertSame ('select * from "users" where "id" = ? or ? not between "created_at" and "updated_at" ' , $ builder ->toSql ());
135+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
136+
137+ $ builder = $ this ->getBuilder ();
138+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueNotBetween ('2020-01-01 19:30:00 ' , [new Raw (1 ), new Raw (2 )]);
139+ $ this ->assertSame ('select * from "users" where "id" = ? or ? not between 1 and 2 ' , $ builder ->toSql ());
140+ $ this ->assertEquals ([0 => 2 , 1 => '2020-01-01 19:30:00 ' ], $ builder ->getBindings ());
141+
142+ $ builder = $ this ->getBuilder ();
143+ $ builder ->select ('* ' )->from ('users ' )->where ('id ' , 2 )->orWhereValueNotBetween (new Raw (1 ), ['created_at ' , 'updated_at ' ]);
144+ $ this ->assertSame ('select * from "users" where "id" = ? or 1 not between "created_at" and "updated_at" ' , $ builder ->toSql ());
145+ }
146+
59147 public function testBasicSelect (): void
60148 {
61149 $ builder = $ this ->getBuilder ();
0 commit comments