๐Ÿงช Testing Batch Sync API ========================= Setup: Creating test scanner device... โœ… Scanner created โœ… JWT token generated Setup: Finding test event... โœ… Using event: (ID: 1) Setup: Creating test tickets... SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'tickets_booking_id_unique' (SQL: insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (1, 2026-02-03 07:40:09, 2026-02-03 07:40:09)) (500 Internal Server Error)

Symfony Exception

PDOException QueryException

HTTP 500 Internal Server Error

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'tickets_booking_id_unique' (SQL: insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (1, 2026-02-03 07:40:09, 2026-02-03 07:40:09))

Exceptions 2

Illuminate\Database\ QueryException

Show exception properties
Illuminate\Database\QueryException {#2047
  +errorInfo: array:3 [
    0 => "23000"
    1 => 1062
    2 => "Duplicate entry '' for key 'tickets_booking_id_unique'"
  ]
  #sql: "insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)"
  #bindings: array:3 [
    0 => 1
    1 => "2026-02-03 07:40:09"
    2 => "2026-02-03 07:40:09"
  ]
}
  1.         // If an exception occurs when attempting to run a query, we'll format the error
  2.         // message to include the bindings with SQL, which will make this exception a
  3.         // lot more helpful to the developer instead of just the database's errors.
  4.         catch (Exception $e) {
  5.             throw new QueryException(
  6.                 $query$this->prepareBindings($bindings), $e
  7.             );
  8.         }
  9.     }
  1.         // Here we will run this query. If an exception occurs we'll determine if it was
  2.         // caused by a connection that has been lost. If that is the cause, we'll try
  3.         // to re-establish connection and re-run the query with a fresh connection.
  4.         try {
  5.             $result $this->runQueryCallback($query$bindings$callback);
  6.         } catch (QueryException $e) {
  7.             $result $this->handleQueryException(
  8.                 $e$query$bindings$callback
  9.             );
  10.         }
  1.      * @param  array  $bindings
  2.      * @return bool
  3.      */
  4.     public function statement($query$bindings = [])
  5.     {
  6.         return $this->run($query$bindings, function ($query$bindings) {
  7.             if ($this->pretending()) {
  8.                 return true;
  9.             }
  10.             $statement $this->getPdo()->prepare($query);
  1.      * @param  array  $bindings
  2.      * @return bool
  3.      */
  4.     public function insert($query$bindings = [])
  5.     {
  6.         return $this->statement($query$bindings);
  7.     }
  8.     /**
  9.      * Run an update statement against the database.
  10.      *
  1.      * @param  string|null  $sequence
  2.      * @return int
  3.      */
  4.     public function processInsertGetId(Builder $query$sql$values$sequence null)
  5.     {
  6.         $query->getConnection()->insert($sql$values);
  7.         $id $query->getConnection()->getPdo()->lastInsertId($sequence);
  8.         return is_numeric($id) ? (int) $id $id;
  9.     }
  1.         $sql $this->grammar->compileInsertGetId($this$values$sequence);
  2.         $values $this->cleanBindings($values);
  3.         return $this->processor->processInsertGetId($this$sql$values$sequence);
  4.     }
  5.     /**
  6.      * Insert new records into the table using a subquery.
  7.      *
  1.         if ($this->hasNamedScope($method)) {
  2.             return $this->callNamedScope($method$parameters);
  3.         }
  4.         if (in_array($method$this->passthru)) {
  5.             return $this->toBase()->{$method}(...$parameters);
  6.         }
  7.         $this->forwardCallTo($this->query$method$parameters);
  8.         return $this;
  1.      * @param  array  $attributes
  2.      * @return void
  3.      */
  4.     protected function insertAndSetId(Builder $query$attributes)
  5.     {
  6.         $id $query->insertGetId($attributes$keyName $this->getKeyName());
  7.         $this->setAttribute($keyName$id);
  8.     }
  9.     /**
  1.         // the query builder, which will give us back the final inserted ID for this
  2.         // table from the database. Not all tables have to be incrementing though.
  3.         $attributes $this->getAttributesForInsert();
  4.         if ($this->getIncrementing()) {
  5.             $this->insertAndSetId($query$attributes);
  6.         }
  7.         // If the table isn't incrementing we'll simply insert these attributes as they
  8.         // are. These attribute arrays must contain an "id" column previously placed
  9.         // there by the developer as the manually determined key for these models.
  1.         // If the model is brand new, we'll insert it into our database and set the
  2.         // ID attribute on the model to the value of the newly inserted row's ID
  3.         // which is typically an auto-increment value managed by the database.
  4.         else {
  5.             $saved $this->performInsert($query);
  6.             if (! $this->getConnectionName() &&
  7.                 $connection $query->getConnection()) {
  8.                 $this->setConnection($connection->getName());
  9.             }
  1.      * @return \Illuminate\Database\Eloquent\Model|$this
  2.      */
  3.     public function create(array $attributes = [])
  4.     {
  5.         return tap($this->newModelInstance($attributes), function ($instance) {
  6.             $instance->save();
  7.         });
  8.     }
  9.     /**
  10.      * Save a new model and return the instance. Allow mass-assignment.
  1.     {
  2.         if (is_null($callback)) {
  3.             return new HigherOrderTapProxy($value);
  4.         }
  5.         $callback($value);
  6.         return $value;
  7.     }
  8. }
  1.      * @param  array  $attributes
  2.      * @return \Illuminate\Database\Eloquent\Model|$this
  3.      */
  4.     public function create(array $attributes = [])
  5.     {
  6.         return tap($this->newModelInstance($attributes), function ($instance) {
  7.             $instance->save();
  8.         });
  9.     }
  10.     /**
  1.      * @throws \BadMethodCallException
  2.      */
  3.     protected function forwardCallTo($object$method$parameters)
  4.     {
  5.         try {
  6.             return $object->{$method}(...$parameters);
  7.         } catch (Error|BadMethodCallException $e) {
  8.             $pattern '~^Call to undefined method (?P<class>[^:]+)::(?P<method>[^\(]+)\(\)$~';
  9.             if (! preg_match($pattern$e->getMessage(), $matches)) {
  10.                 throw $e;
  1.         if (Str::startsWith($method'through') &&
  2.             method_exists($this$relationMethod Str::of($method)->after('through')->lcfirst()->toString())) {
  3.             return $this->through($relationMethod);
  4.         }
  5.         return $this->forwardCallTo($this->newQuery(), $method$parameters);
  6.     }
  7.     /**
  8.      * Handle dynamic static method calls into the model.
  9.      *
  1.      * @param  array  $parameters
  2.      * @return mixed
  3.      */
  4.     public static function __callStatic($method$parameters)
  5.     {
  6.         return (new static)->$method(...$parameters);
  7.     }
  8.     /**
  9.      * Convert the model to its string representation.
  10.      *
Model::__callStatic('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false))) in /home/globalgala/public_html/2026_backend_dev/tests/manual/test-batch-sync-api.php (line 60)
  1. // Setup: Create test tickets
  2. echo "Setup: Creating test tickets...\n";
  3. $tickets = [];
  4. for ($i 1$i <= 5$i++) {
  5.     $tickets[] = Ticket::create([
  6.         'event_id' => $event->id,
  7.         'verification_code' => 'TEST' Str::random(17),
  8.         'ticket_number' => 'BATCH-TEST-' $i,
  9.         'seat_number' => "A{$i}",
  10.         'order_id' => 1,

PDOException

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'tickets_booking_id_unique'

  1.             $this->bindValues($statement$this->prepareBindings($bindings));
  2.             $this->recordsHaveBeenModified();
  3.             return $statement->execute();
  4.         });
  5.     }
  6.     /**
  7.      * Run an SQL statement and get the number of rows affected.
  1.             $this->bindValues($statement$this->prepareBindings($bindings));
  2.             $this->recordsHaveBeenModified();
  3.             return $statement->execute();
  4.         });
  5.     }
  6.     /**
  7.      * Run an SQL statement and get the number of rows affected.
  1.     {
  2.         // To execute the statement, we'll simply call the callback, which will actually
  3.         // run the SQL against the PDO connection. Then we can calculate the time it
  4.         // took to execute and log the query SQL, bindings and time in our memory.
  5.         try {
  6.             return $callback($query$bindings);
  7.         }
  8.         // If an exception occurs when attempting to run a query, we'll format the error
  9.         // message to include the bindings with SQL, which will make this exception a
  10.         // lot more helpful to the developer instead of just the database's errors.
  1.         // Here we will run this query. If an exception occurs we'll determine if it was
  2.         // caused by a connection that has been lost. If that is the cause, we'll try
  3.         // to re-establish connection and re-run the query with a fresh connection.
  4.         try {
  5.             $result $this->runQueryCallback($query$bindings$callback);
  6.         } catch (QueryException $e) {
  7.             $result $this->handleQueryException(
  8.                 $e$query$bindings$callback
  9.             );
  10.         }
  1.      * @param  array  $bindings
  2.      * @return bool
  3.      */
  4.     public function statement($query$bindings = [])
  5.     {
  6.         return $this->run($query$bindings, function ($query$bindings) {
  7.             if ($this->pretending()) {
  8.                 return true;
  9.             }
  10.             $statement $this->getPdo()->prepare($query);
  1.      * @param  array  $bindings
  2.      * @return bool
  3.      */
  4.     public function insert($query$bindings = [])
  5.     {
  6.         return $this->statement($query$bindings);
  7.     }
  8.     /**
  9.      * Run an update statement against the database.
  10.      *
  1.      * @param  string|null  $sequence
  2.      * @return int
  3.      */
  4.     public function processInsertGetId(Builder $query$sql$values$sequence null)
  5.     {
  6.         $query->getConnection()->insert($sql$values);
  7.         $id $query->getConnection()->getPdo()->lastInsertId($sequence);
  8.         return is_numeric($id) ? (int) $id $id;
  9.     }
  1.         $sql $this->grammar->compileInsertGetId($this$values$sequence);
  2.         $values $this->cleanBindings($values);
  3.         return $this->processor->processInsertGetId($this$sql$values$sequence);
  4.     }
  5.     /**
  6.      * Insert new records into the table using a subquery.
  7.      *
  1.         if ($this->hasNamedScope($method)) {
  2.             return $this->callNamedScope($method$parameters);
  3.         }
  4.         if (in_array($method$this->passthru)) {
  5.             return $this->toBase()->{$method}(...$parameters);
  6.         }
  7.         $this->forwardCallTo($this->query$method$parameters);
  8.         return $this;
  1.      * @param  array  $attributes
  2.      * @return void
  3.      */
  4.     protected function insertAndSetId(Builder $query$attributes)
  5.     {
  6.         $id $query->insertGetId($attributes$keyName $this->getKeyName());
  7.         $this->setAttribute($keyName$id);
  8.     }
  9.     /**
  1.         // the query builder, which will give us back the final inserted ID for this
  2.         // table from the database. Not all tables have to be incrementing though.
  3.         $attributes $this->getAttributesForInsert();
  4.         if ($this->getIncrementing()) {
  5.             $this->insertAndSetId($query$attributes);
  6.         }
  7.         // If the table isn't incrementing we'll simply insert these attributes as they
  8.         // are. These attribute arrays must contain an "id" column previously placed
  9.         // there by the developer as the manually determined key for these models.
  1.         // If the model is brand new, we'll insert it into our database and set the
  2.         // ID attribute on the model to the value of the newly inserted row's ID
  3.         // which is typically an auto-increment value managed by the database.
  4.         else {
  5.             $saved $this->performInsert($query);
  6.             if (! $this->getConnectionName() &&
  7.                 $connection $query->getConnection()) {
  8.                 $this->setConnection($connection->getName());
  9.             }
  1.      * @return \Illuminate\Database\Eloquent\Model|$this
  2.      */
  3.     public function create(array $attributes = [])
  4.     {
  5.         return tap($this->newModelInstance($attributes), function ($instance) {
  6.             $instance->save();
  7.         });
  8.     }
  9.     /**
  10.      * Save a new model and return the instance. Allow mass-assignment.
  1.     {
  2.         if (is_null($callback)) {
  3.             return new HigherOrderTapProxy($value);
  4.         }
  5.         $callback($value);
  6.         return $value;
  7.     }
  8. }
  1.      * @param  array  $attributes
  2.      * @return \Illuminate\Database\Eloquent\Model|$this
  3.      */
  4.     public function create(array $attributes = [])
  5.     {
  6.         return tap($this->newModelInstance($attributes), function ($instance) {
  7.             $instance->save();
  8.         });
  9.     }
  10.     /**
  1.      * @throws \BadMethodCallException
  2.      */
  3.     protected function forwardCallTo($object$method$parameters)
  4.     {
  5.         try {
  6.             return $object->{$method}(...$parameters);
  7.         } catch (Error|BadMethodCallException $e) {
  8.             $pattern '~^Call to undefined method (?P<class>[^:]+)::(?P<method>[^\(]+)\(\)$~';
  9.             if (! preg_match($pattern$e->getMessage(), $matches)) {
  10.                 throw $e;
  1.         if (Str::startsWith($method'through') &&
  2.             method_exists($this$relationMethod Str::of($method)->after('through')->lcfirst()->toString())) {
  3.             return $this->through($relationMethod);
  4.         }
  5.         return $this->forwardCallTo($this->newQuery(), $method$parameters);
  6.     }
  7.     /**
  8.      * Handle dynamic static method calls into the model.
  9.      *
  1.      * @param  array  $parameters
  2.      * @return mixed
  3.      */
  4.     public static function __callStatic($method$parameters)
  5.     {
  6.         return (new static)->$method(...$parameters);
  7.     }
  8.     /**
  9.      * Convert the model to its string representation.
  10.      *
Model::__callStatic('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false))) in /home/globalgala/public_html/2026_backend_dev/tests/manual/test-batch-sync-api.php (line 60)
  1. // Setup: Create test tickets
  2. echo "Setup: Creating test tickets...\n";
  3. $tickets = [];
  4. for ($i 1$i <= 5$i++) {
  5.     $tickets[] = Ticket::create([
  6.         'event_id' => $event->id,
  7.         'verification_code' => 'TEST' Str::random(17),
  8.         'ticket_number' => 'BATCH-TEST-' $i,
  9.         'seat_number' => "A{$i}",
  10.         'order_id' => 1,

Stack Traces 2

[2/2] QueryException
Illuminate\Database\QueryException:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'tickets_booking_id_unique' (SQL: insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (1, 2026-02-03 07:40:09, 2026-02-03 07:40:09))

  at /home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
  at Illuminate\Database\Connection->runQueryCallback('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:720)
  at Illuminate\Database\Connection->run('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:534)
  at Illuminate\Database\Connection->statement('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:498)
  at Illuminate\Database\Connection->insert('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32)
  at Illuminate\Database\Query\Processors\Processor->processInsertGetId(object(Builder), 'insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), 'id')
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3322)
  at Illuminate\Database\Query\Builder->insertGetId(array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), 'id')
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1869)
  at Illuminate\Database\Eloquent\Builder->__call('insertGetId', array(array('event_id' => 1, 'updated_at' => '2026-02-03 07:40:09', 'created_at' => '2026-02-03 07:40:09'), 'id'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1330)
  at Illuminate\Database\Eloquent\Model->insertAndSetId(object(Builder), array('event_id' => 1, 'updated_at' => '2026-02-03 07:40:09', 'created_at' => '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1295)
  at Illuminate\Database\Eloquent\Model->performInsert(object(Builder))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1138)
  at Illuminate\Database\Eloquent\Model->save()
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:986)
  at Illuminate\Database\Eloquent\Builder->Illuminate\Database\Eloquent\{closure}(object(Ticket))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Support/helpers.php:319)
  at tap(object(Ticket), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:985)
  at Illuminate\Database\Eloquent\Builder->create(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23)
  at Illuminate\Database\Eloquent\Model->forwardCallTo(object(Builder), 'create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2330)
  at Illuminate\Database\Eloquent\Model->__call('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2342)
  at Illuminate\Database\Eloquent\Model::__callStatic('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/tests/manual/test-batch-sync-api.php:60)                
[1/2] PDOException
PDOException:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'tickets_booking_id_unique'

  at /home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:545
  at PDOStatement->execute()
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:545)
  at Illuminate\Database\Connection->Illuminate\Database\{closure}('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:753)
  at Illuminate\Database\Connection->runQueryCallback('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:720)
  at Illuminate\Database\Connection->run('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:534)
  at Illuminate\Database\Connection->statement('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php:498)
  at Illuminate\Database\Connection->insert('insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32)
  at Illuminate\Database\Query\Processors\Processor->processInsertGetId(object(Builder), 'insert into `tickets` (`event_id`, `updated_at`, `created_at`) values (?, ?, ?)', array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), 'id')
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3322)
  at Illuminate\Database\Query\Builder->insertGetId(array(1, '2026-02-03 07:40:09', '2026-02-03 07:40:09'), 'id')
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1869)
  at Illuminate\Database\Eloquent\Builder->__call('insertGetId', array(array('event_id' => 1, 'updated_at' => '2026-02-03 07:40:09', 'created_at' => '2026-02-03 07:40:09'), 'id'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1330)
  at Illuminate\Database\Eloquent\Model->insertAndSetId(object(Builder), array('event_id' => 1, 'updated_at' => '2026-02-03 07:40:09', 'created_at' => '2026-02-03 07:40:09'))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1295)
  at Illuminate\Database\Eloquent\Model->performInsert(object(Builder))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1138)
  at Illuminate\Database\Eloquent\Model->save()
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:986)
  at Illuminate\Database\Eloquent\Builder->Illuminate\Database\Eloquent\{closure}(object(Ticket))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Support/helpers.php:319)
  at tap(object(Ticket), object(Closure))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:985)
  at Illuminate\Database\Eloquent\Builder->create(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23)
  at Illuminate\Database\Eloquent\Model->forwardCallTo(object(Builder), 'create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2330)
  at Illuminate\Database\Eloquent\Model->__call('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2342)
  at Illuminate\Database\Eloquent\Model::__callStatic('create', array(array('event_id' => 1, 'verification_code' => 'TESTHK3uxmjuwMqYdS0zC', 'ticket_number' => 'BATCH-TEST-1', 'seat_number' => 'A1', 'order_id' => 1, 'is_revoked' => false)))
     (/home/globalgala/public_html/2026_backend_dev/tests/manual/test-batch-sync-api.php:60)