Skip to content

Commit fc04bbf

Browse files
authored
[11.x] Add DB::build method (#53464)
* Add ability to build a database connection without specifying name * Add test
1 parent b86bf27 commit fc04bbf

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/Illuminate/Database/DatabaseManager.php

+15
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,21 @@ public function connection($name = null)
9999
return $this->connections[$name];
100100
}
101101

102+
/**
103+
* Build a database connection instance from the given configuration.
104+
*
105+
* @param array $config
106+
* @return \Illuminate\Database\ConnectionInterface
107+
*/
108+
public function build(array $config)
109+
{
110+
return $this->connectUsing(
111+
$config['name'] ?? 'ondemand',
112+
$config,
113+
true,
114+
);
115+
}
116+
102117
/**
103118
* Get a database connection instance from the given configuration.
104119
*

src/Illuminate/Support/Facades/DB.php

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
/**
1111
* @method static \Illuminate\Database\Connection connection(string|null $name = null)
1212
* @method static \Illuminate\Database\ConnectionInterface connectUsing(string $name, array $config, bool $force = false)
13+
* @method static \Illuminate\Database\ConnectionInterface build(array $config)
1314
* @method static void purge(string|null $name = null)
1415
* @method static void disconnect(string|null $name = null)
1516
* @method static \Illuminate\Database\Connection reconnect(string|null $name = null)

tests/Integration/Database/DatabaseConnectionsTest.php

+14
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@
66

77
use Illuminate\Database\DatabaseManager;
88
use Illuminate\Database\Events\ConnectionEstablished;
9+
use Illuminate\Database\SQLiteConnection;
910
use Illuminate\Events\Dispatcher;
1011
use RuntimeException;
1112

1213
class DatabaseConnectionsTest extends DatabaseTestCase
1314
{
15+
public function testBuildDatabaseConnection()
16+
{
17+
/** @var \Illuminate\Database\DatabaseManager $manager */
18+
$manager = $this->app->make(DatabaseManager::class);
19+
20+
$connection = $manager->build([
21+
'driver' => 'sqlite',
22+
'database' => ':memory:',
23+
]);
24+
25+
$this->assertInstanceOf(SQLiteConnection::class, $connection);
26+
}
27+
1428
public function testEstablishDatabaseConnection()
1529
{
1630
/** @var \Illuminate\Database\DatabaseManager $manager */

0 commit comments

Comments
 (0)