docs/en/changelog/3.1.md
Hyperf\Database\Concerns\BuildsQueries::getOriginalColumnNameForCursorPagination cannot work.nacos service not found.Aws\Handler\GuzzleV6\GuzzleHandler not found.Hyperf\Amqp\Message\Message::getTypeString() method to prevent conflicts between property and getter methods.App\\Model\\User for validation rule exists and unique.Hyperf\Crontab\Mutex\RedisServerMutexByNodeName.AsCollection for hyperf/database.hyperf/tracer.hyperf/cache.eachById cannot work for Hyperf\Database\Query\Builder.client_count option to create multiple gRPC clients with load balancing in hyperf/grpc-client.$isCookiePersistent parameter to Hyperf\Guzzle\PoolHandler to enable persistent cookies.--path option to generator commands for specifying custom output locations.Hyperf\Database\Schema\Builder::withoutForeignKeyConstraints().cascadeOnDelete(), restrictOnDelete(), noActionOnDelete(), restrictOnUpdate(), nullOnUpdate(), noActionOnUpdate() for ForeignKeyDefinition.Pool::flushAll() and PoolFactory::flushAll() methods to close all pool connections.whereJsonContainsKey(), orWhereJsonContainsKey(), whereJsonDoesntContainKey(), orWhereJsonDoesntContainKey() for Query Builder.ValidationException in JSON-RPC core middleware to properly return INVALID_PARAMS error responses.Blueprint::foreign() which caused static analysis errors when chaining references(), on(), etc.Hyperf\Kafka\Event\FailToAck and Hyperf\Kafka\Event\FailToRequeue.thecodingmachine/graphqlite:^8.1.Str::uuidv7() instead of Str::orderedUuid() for better database performance with UUID version 7.OnBeforeHandle listener to remove AfterExecute event handling for better separation of concerns.Hyperf\Collection\Arr::sole().Hyperf\AsyncQueue\Result enum.AnnotationJob to support call protected / private methods.@param-closure-this annotation to Console::command() for better IDE support.$queue property to $pool in ConsumerProcess for better code clarity in hyperf/async-queue.validation rule not define.Hyperf\Validation\ValidationRuleParser::parseParameters() cannot support PHP 8.4.Nacos\Application.PATCH for hyperf/testing.hyperf/database.priorityMiddleware instead of middleware for swagger.batch for migrate:rollback.$pool of kafka consumer cannot not work well.InteractsWithData to Hyperf\Support\Fluent.Hyperf\Database\Model\Builder::incrementOrCreate().Collection::doesntContainStrict() and LazyCollection::doesntContainStrict().disassociate() of Hyperf\Database\Model\Relations\BelongsTo::dissociate().Hyperf\Database\Model\Model::isSoftDeletable().Hyperf\Database\Model\Builder::except().Hyperf\Database\Model\Casts\AsArrayObject for ArrayObject.Macroable to Hyperf\Pipeline\Pipeline.Hyperf\Kafka\Constants\KafkaStrategy::STICKY_ASSIGNOR.Hyperf\Collection\Arr::push() and Hyperf\Collection\Arr::array().Hyperf\Collection\Arr::hasAll().Hyperf\Codec\Packer\Resp3Packer.Hyperf\Database\Query\Grammars\Grammar::whereValueBetween().Hyperf\Macroable\Macroable::macro() to avoid unexpected results caused by using reference parameters.migrate:fresh can't drop postgres tables by default.Hyperf\Database\Migrations\Migrator::reset() cannot support string paths.isEmpty / isNotEmpty / getIterator methods to Hyperf\Support\Fluent class.produce_retry and producer_retry_sleep for kafka.php cannot contain spaces for watcher.exclude cannot not work when using validation.transaction or pipeline with callbacks.connect_timeout cannot work for pgsql-swoole database.Hyperf\Utils Component.gen:model cannot work when using pgsql.setMultiple cannot work for memory cache driver.coroutine option to AsCommand and ClosureCommand.runAsync for CacheAHead.hyperf/logger.Hyperf\Database\PgSQL\Query\Grammars\PostgresGrammar\compileJsonOverlaps.Hyperf\HttpServer\Router\RouteCollector.paginationInformation for resource.Hyperf\Coroutine\Barrier.POST.$connection is not correct when creating models.Hyperf\Redis\Event\CommandExecuted::getFormatCommand().contains, extensions and hex_color.schema Configuration for hyperf/db with pgsql.attributes into Hyperf\Di\ReflectionType.Hyperf\Memory\LockManager::exists().Hyperf\Database\Connection::scalar() which used to retrieve the first column of the first row from a query.trait when using gen:model.Hyperf\Coroutine\Coroutine::list().null from Model::createOrFirst.Hyperf\AsyncQueue\Driver\Driver::getConfig().createOrFirst() and createOrRestore() into Hyperf\Database\Model\Builder.existsOr and doesntExistOr into Hyperf\Database\Query\Builder.Hyperf\Database\Query\Builder::sole().Hyperf\Database\Model\Model::discardChanges().Hyperf\Database\Model\Model::hasAppended().Hyperf\Coroutine\WaitConcurrent.Hyperf\Command\Concerns\Prohibitable.Hyperf\Redis\Event\CommandExecuted.cursor automatically.composer.lock.get_called_class with static::class.Hyperf\Coroutine\Mutex.connection_name which used to define amqp connection name.composer.lock.Hyperf\Support\SafeCaller.Hyperf\HttpMessage\Server\ResponsePlusProxy cannot support another responses without getCookies.Hyperf\Database\Model\Collection::findOrFail().swow.exclude rules for hyperf/validation.accepted_if, ascii, date_equals...) to validation messages.beforeTestInCoroutine and afterTestInCoroutine for Hyperf\Testing\Concerns\RunTestsInCoroutine::runTestsInCoroutine().Hyperf\Database\Schema\Blueprint::engine().Hyperf\Collection\Arr::shuffleAssoc.Hyperf\Database\Model\Builder::findOr.setVisible and setHidden into Model\Collection.servers and info for swagger.nullableUuidMorphs uuidMorphs and nullableNumericMorphs to Hyperf\Database\Schema\Blueprint.Blueprint::charset() and Blueprint::collation().Hyperf\Database\Schema\Blueprint::tinyText().sortByMany value is null when using SORT_NATURAL.Str::trim cannot support the default rules "\n\r\t\v" for trim/ltrim/rtim.CacheAHead cannot use the default ttl.Hyperf\Database\Query\Grammars\Grammar::compileUpdate().Hyperf\Watcher\Ast\RewriteClassNameVisitor::leaveNode().env_vars to keep the child process environment variables consistent with the parent process.Hyperf\Database\Model\Relations\Relation::getMorphAlias().data_get cannot support int key.Hyperf\Database\Schema\Schema::getForeignKeys().enum for DoctrineConnection.ModelUpdateVisitor::getReturnType method.--database option does not work for migrate command.$value and $pattern to string for Str::is().declare when using phar:build.jsonrpc-http cannot support swow.ConsoleLogger to support running in watcher.phar:build.whenTableHasColumn and whenTableDoesntHaveColumn to Hyperf\Database\Schema\Schema.QueryBuilder.Hyperf\Contract\CanBeEscapedWhenCastToString and fixed some static detection.Hyperf\Framework\Logger\ConsoleLogger.whereNone and orWhereNone to Hyperf\Database\Query\Builder.anonymous classes to avoid the duplicated class name for database migrations.Hyperf\Support\Traits\InteractsWithTime.#[AutoController]. (You can add method options which used to support cors middleware)Model/JsonResource::toJson.websocket sender not support Swow..env.where bit functions and operators for database..env when using hyperf/watcher.sortByMany don't reset indexes for Collection. But it will be return the same result like sortBy in v3.2.sortByMany cannot support options like sortBy.LengthAwarePaginator::addQuery() cannot support array $values.Aop doesn't work on Trait.config-nacos.prohibiti.cache.*.options.pool to select redis instance for hyperf/cache.getViews and hasView into Hyperf\Database\Schema\Schema.Hyperf\Database\Concerns\BuildsQueries::lazy.before and after into Collection.Hyperf\Database\Concerns\Builder::eachById.whereMorphRelation and orWhereMorphRelation into Hyperf\Database\Model\Concerns\QueriesRelationships.getIndexes hasIndex and getIndexListing into Hyperf\Database\Schema\Builder.Hyperf\Database\Model\Model::updateOrFail.BeforeLongLangConsumerCreated and AfterConsumerConfigCreated into Hyperf\Kafka\ConsumerManager.Closure|Expression|ModelBuilder|static|string of $column for QueryBuilder::orderBy().Scanner instead of hard code for hyperf/watcher component.LazyCollection::splitIn() cannot work caused by type hint.Hyperf\Database\Schema::getTables().chunkById and chunkByIdDesc into Hyperf\Database\Concerns\BuildsQueries.orDoesntHaveMorph and orHasMorph into Hyperf\Database\Model\Concerns.makeHiddenIf and makeVisibleIf into Hyperf\Database\Model\Concerns\HidesAttributes.Conditionable instead of when and unless.Hyperf\Scout\Builder to use Conditionable instead of when and unless.Hyperf\Collection\Enumerable instead of Hyperf\ViewEngine\Contract\Enumerable.Model\Concerns\QueriesRelationships::withWhereHas().whereRelation and orWhereRelation into Hyperf\Database\Model\Concerns\QueriesRelationships.hyperf/database.list rule for hyperf/validation.Model::query()->touch() which used to update timestamps.Hyperf\Database\Model\Builder::qualifyColumns().Hyperf\Database\Model\Builder::load*.Hyperf\Database\Model\Builder::valueOrFail().Hyperf\Database\Concerns\BuildsQueries::chunkMap().lazyById and lazyByIdDesc for lazy queries.createDatabase and dropDatabaseIfExists for Hyperf\Database\Schmea.Hyperf\Constants\Annotation\Message.updateOrInsert cannot work when the input is empty.AOP cannot work on __construct.SetCookie::fromString cannot not work by invalid types.IncrementEach and DecrementEach for Hyperf\Database\Query\Builder.rate_limit.storage.options.expired_time for rate-limit.Hyperf\Amqp\Annotation\Consumer::routingKey.numbers and fromBase64 methods for \Hyperf\Stringable\Str.Hyperf\Collection\LazyCollection.Premature end of data into DetectsLostConnections.whereAll/orWhereAll whereAny/orWhereAny for Hyperf\Database\Query\Builder.Hyperf\Database\Query\BuilderHyperf\Collection\Arr.whereJsonOverlaps,orWhereJsonOverlaps and whereJsonDoesntOverlap to Hyperf\Database\Query\Builder.insertOrIgnoreUsing for Hyperf\Database\Query\Builder.getOrPut and getOrSet into Hyperf\Collection\Collection.explain() for Hyperf\Database\Query\Builder.hyperf/validation.path and paths methods to Hyperf\Database\Seeders\Seed.unshift method to Hyperf\Collection\Collection.useIndex forceIndex and ignoreIndex for Hyperf\Database\Query\Builder.When Method.hyperf/watch cannot work when using hyperf/constants enum mode.onClose method for rpc Server.Hyperf\Collection\Collection.Pluralizer.? but without query.withoutBody cannot not work when using Swow.Hyperf\Coordinator helper functions.type for gen:constant which you can be used to generate files with const or enum.FswatchDriver which don't restart server by empty reading.hyperf/engine to v2.11.isset cannot check null in Hyperf\Collection\Collection.callback in multiplexed RPC.MiddlewareManagerWebsocket.PHP_BINARY instead of php as default php binary path for hyperf/watcher.websocket-client.push``disconnect.ConsumerMessage::getQueue return type.hyperf/constants.hyperf/pool.WebSocketHandeShakeException is deprecated, please use WebSocketHandShakeException instead.scan configuration does not exist.hyperf/carbon component.CacheAheadAspect which store cache in another coroutine instead of blocking current coroutine.Hyperf\Stringable\Str::apa() method.now() and today() helper functions.--graceful to migrateCommand.AsCommand.gen:model.$request->all().CrontabRegisterListener don't check configuration crontab.enable.invalidOperator cannot work well when using non-string operators.hyperf/opentracing.SqliteDriver for hyperf/cache.retry helper function can accept array as first parameter.decimal cannot work well with size for validation.async-queue.Schedule::call() cannot support array when using crontab.Hyperf\AsyncQueue\JobMessage.HostReaderInterface for rpc-multiplex.Psr\Log\LoggerInterface.Collection::replace() and Collection::replaceRecursive().php and swoole.ReflectionManager::getAllClassesByFinder.Arr::remove.Crontab::setOptions() and Crontab::getOptions().Hyperf\SocketIOServer\Parser\Decoder::decode().DispatcherFactory which use require instead of require_once for loading routes.gen:swagger-schema.serverMutex and taskMutex for Crontab.UnsetContextInTaskWorkerListener which can be used to unset connection context when using non-coroutine task worker.prepareHandler cannot work sometimes for circuit-breaker.RewriteReturnType which used to rewrite the return type when generating models.InvalidArgumentException instead of TypeError for decoding an empty string when using Base62::decode.Hyperf\Scout\Searchable don't import namespace of function config.timezone parameter to hyperf/crontab component.template_suffix configuration to twig engine.RateLimitAnnotationAspect::getWeightingAnnotation() cannot work when using config rate_limit.storage.scout cannot work when using elasticsearch(which version is less than 7) without index.command config devtool di and server.ping method for grpc client.hyperf/polyfill-coroutine component.GrpcClient::runReceiveCoroutine will unset streamId before recv method.Hyperf\SocketIOServer\Emitter\Future cannot be resolved.Coroutine::fork() method and Coroutine::pid() method.content-type header for swagger server.>=8.1>=5.0hyperf/engine to ^2.0phpunit/phpunit to ^10.0hyperf/helper component.hyperf/polyfill-coroutine component.mysql for pdo in hyperf/db.model-factory support for hyperf/testing.toRawSql() to Query Builders.getRawQueryLog() to Database Connection.data_forget helper.Str::isUrl() and use it from the validator.Arr::isList() method.AsCommand annotation and ClosureCommand support.Job::setMaxAttempts method and dispatch helper function for hyperf/async-queue.hyperf/migration-generator which used to generate migrations from databases.skipCacheResults to annotations of hyperf/cache.events of crontab lifecycle.hyperf/stdlib component.Hyperf\AsyncQueue\Job::fail().Hyperf\Database\Query\Builder\addSelect.processors for swagger.StrCache instead of Str in special cases.refresh() multi times.Command.Str::isUrl().\Stringable interface to classes that have __toString() method.Hyperf\Coroutine\Locker.Collection::except() with null returns all.null.ProcessManager to make the running status more clear.BadRequestHttpException.hyperf/utils.setAccessible methods.Hyperf\Stringable\StrHyperf\Di\Annotation\AbstractAnnotation.Hyperf\Coroutine\Traits\Container.swoole-tracker.json rpc http transporter when the status code isn't 200.enum instead of class for Hyperf\Amqp\Result and Hyperf\Amqp\Message\Type.Base62::decode to decode the incorrect data, it should be thrown InvalidArgumentException instead of TypeError.hyperf/config, you can use config('a.c') to get the configurations from autoload/a/c.php.Model::updateOrInsert isn't boolean.RequestContext and ResponseContext cannot get instance from another coroutines.Hyperf\HttpServer\Request::hasFile() don't support Swow.LoadBalancerInterface::refresh().Hyperf\DB\PgSQL\PgSQLConnection::str_replace_once will be deprecated, please use Hyperf\DB\PgSQL\PgSQLConnection::strReplaceOnce instead.Hyperf\Database\PgSQL\PostgreSqlSwooleExtConnection::str_replace_once will be deprecated, please use Hyperf\Database\PgSQL\PostgreSqlSwooleExtConnection::strReplaceOnce instead.