QueryingWithEnumsTest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace Illuminate\Tests\Integration\Database;
  3. use Illuminate\Database\Schema\Blueprint;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Schema;
  6. if (PHP_VERSION_ID >= 80100) {
  7. include_once 'Enums.php';
  8. }
  9. /**
  10. * @requires PHP >= 8.1
  11. */
  12. class QueryingWithEnumsTest extends DatabaseTestCase
  13. {
  14. protected function defineDatabaseMigrationsAfterDatabaseRefreshed()
  15. {
  16. Schema::create('enum_casts', function (Blueprint $table) {
  17. $table->increments('id');
  18. $table->string('string_status', 100)->nullable();
  19. $table->integer('integer_status')->nullable();
  20. });
  21. }
  22. public function testCanQueryWithEnums()
  23. {
  24. DB::table('enum_casts')->insert([
  25. 'string_status' => 'pending',
  26. 'integer_status' => 1,
  27. ]);
  28. $record = DB::table('enum_casts')->where('string_status', StringStatus::pending)->first();
  29. $record2 = DB::table('enum_casts')->where('integer_status', IntegerStatus::pending)->first();
  30. $record3 = DB::table('enum_casts')->whereIn('integer_status', [IntegerStatus::pending])->first();
  31. $this->assertNotNull($record);
  32. $this->assertNotNull($record2);
  33. $this->assertNotNull($record3);
  34. $this->assertEquals('pending', $record->string_status);
  35. $this->assertEquals(1, $record2->integer_status);
  36. }
  37. public function testCanInsertWithEnums()
  38. {
  39. DB::table('enum_casts')->insert([
  40. 'string_status' => StringStatus::pending,
  41. 'integer_status' => IntegerStatus::pending,
  42. ]);
  43. $record = DB::table('enum_casts')->where('string_status', StringStatus::pending)->first();
  44. $this->assertNotNull($record);
  45. $this->assertEquals('pending', $record->string_status);
  46. $this->assertEquals(1, $record->integer_status);
  47. }
  48. }