|
4 | 4 |
|
5 | 5 | use Illuminate\Support\Facades\DB; |
6 | 6 | use Illuminate\Support\Str; |
| 7 | +use PHPUnit\Framework\Attributes\Test; |
7 | 8 | use Yajra\DataTables\Tests\Models\User; |
8 | 9 | use Yajra\DataTables\Tests\TestCase; |
9 | 10 |
|
@@ -171,4 +172,42 @@ public function assertQueryHasNoSelect($expected, $query): void |
171 | 172 |
|
172 | 173 | $this->assertSame($expected, Str::startsWith($sql, 'select count(*) from (select 1 as dt_row_count from'), "'{$sql}' has select"); |
173 | 174 | } |
| 175 | + |
| 176 | + #[Test] |
| 177 | + public function test_column_name_is_resolved_in_column_control(): void |
| 178 | + { |
| 179 | + app('datatables.request')->merge([ |
| 180 | + 'columns' => [ |
| 181 | + [ |
| 182 | + 'name' => 'id', |
| 183 | + 'data' => 'id', |
| 184 | + 'searchable' => 'true', |
| 185 | + 'orderable' => 'true', |
| 186 | + 'search' => ['value' => null, 'regex' => 'false'], |
| 187 | + 'columnControl' => [ |
| 188 | + 'search' => [ |
| 189 | + 'value' => '123', |
| 190 | + 'logic' => 'equal', |
| 191 | + 'type' => 'num', |
| 192 | + ], |
| 193 | + ], |
| 194 | + ], |
| 195 | + ], |
| 196 | + ]); |
| 197 | + |
| 198 | + /** @var \Yajra\DataTables\QueryDataTable $dataTable */ |
| 199 | + $dataTable = app('datatables')->of( |
| 200 | + User::query() |
| 201 | + ->select('users.*') |
| 202 | + ->join('role_user', 'users.id', '=', 'role_user.user_id') |
| 203 | + ->join('roles', 'role_user.role_id', '=', 'roles.id') |
| 204 | + ); |
| 205 | + |
| 206 | + $dataTable->columnControlSearch(); |
| 207 | + |
| 208 | + $this->assertStringContainsString( |
| 209 | + '"users"."id" = \'123\'', |
| 210 | + $dataTable->getQuery()->toRawSql() |
| 211 | + ); |
| 212 | + } |
174 | 213 | } |
0 commit comments