You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
The default implementation is provided byMySqlConnectionServiceProvider, however,package discovery is not available.Be careful that you MUST register it inconfig/app.php by yourself.
<?phpuseIlluminate\Support\Facades\DB;// Assign an auto-recoverable system variable// The variable is reassigned on accidental disconnectionsDB::setSystemVariable('long_query_time',10.0);// Assign a system variable without auto-recoveryDB::setSystemVariable('long_query_time',10.0,false);// Assign multiple variablesDB::setSystemVariables(['long_query_time' =>10.0,'transaction_isolation' =>'read-committed']);// Assign a variable on a different connectionDB::connection('other_mysql_connection')->setSystemVariable('long_query_time',10.0);// Run callback temporarily assigning a variableDB::usingSystemVariable('long_query_time',10.0,function () {/* ... */});// Run callback temporarily assigning multiple variablesDB::usingSystemVariables(['long_query_time' =>10.0,'transaction_isolation' =>'read-committed'],function () {/* ... */});// Run callback replacing current value// NOTE: You MUST declare closure return types.DB::usingSystemVariables( ['long_query_time' =>function (float$currentValue):float {return$currentValue +5.0; },'sql_mode' =>function (string$currentValue):string {returnstr_replace('ONLY_FULL_GROUP_BY','',$currentValue); }, ],function () {/* ... */ });
Caution
Don't useDB::disconnect() directly or auto-recovery won't be fired. UseDB::connection()->disconnect() instead.
Advanced Usage
Tip
You can extendMySqlConnection withManagesSystemVariables trait by yourself.