Skip to content

Commit e99bf3b

Browse files
dinamic cnx to save user at mysql or sqlsrv
1 parent 119132e commit e99bf3b

File tree

1 file changed

+56
-7
lines changed

1 file changed

+56
-7
lines changed

Diff for: routes/api.php

+56-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<?php
22

3+
use App\Models\User;
34
use Illuminate\Http\Request;
45
use Illuminate\Support\Facades\DB;
6+
use Illuminate\Support\Facades\Log;
57
use Illuminate\Support\Facades\Route;
68

79
/*
@@ -24,13 +26,60 @@
2426
});
2527

2628
Route::get('/mssql', function () {
27-
$results = DB::select('select * from users');
28-
return $results;
29+
//get users from sqlsrv using eloquent
30+
$users = User::on('sqlsrv')->limit(11)->get();
31+
return $users;
2932
});
3033

31-
//test mssql connection
32-
Route::get('/mssql/sql', function () {
33-
$connection = DB::connection('sqlsrv');
34-
$results = $connection->select("SELECT * FROM [dbo].[users]");
35-
return $results;
34+
Route::get('/users/insert/{cxn?}', function ($cnx = 'mysql') {
35+
$name = fake()->name();
36+
$email = fake()->unique()->safeEmail();
37+
$email = preg_split('/@/', $email)[0];
38+
$startDate = date('Y-m-d H:i:s');
39+
foreach (range(1, 100000) as $index) {
40+
$user = new User();
41+
$user->name = $name;
42+
$user->email = $email . $index . '@gmail.com';
43+
$user->password = 'test123';
44+
$user->setConnection($cnx);
45+
$user->save();
46+
$index++;
47+
}
48+
$endDate = date('Y-m-d H:i:s');
49+
$time = strtotime($endDate) - strtotime($startDate);
50+
$message = 'Time to insert 100000 users: ' . $time . ' seconds' . ' using ' . $cnx . ' connection';
51+
Log::info($message);
52+
return $message;
53+
});
54+
55+
Route::get('/users/bulk-insert/{cxn?}', function ($cnx = 'mysql') {
56+
$name = fake()->name();
57+
$email = fake()->unique()->safeEmail();
58+
$email = preg_split('/@/', $email)[0];
59+
$startDate = date('Y-m-d H:i:s');
60+
$users = [];
61+
foreach (range(1, 10000) as $index) {
62+
$users[] = [
63+
'name' => $name,
64+
'email' => $email . $index . '@gmail.com',
65+
'password' => 'test123',
66+
];
67+
$index++;
68+
if ($index % 500 == 0) {
69+
// both works
70+
// DB::connection($cnx)->table('users')->insert($users);
71+
User::on($cnx)->insert($users);
72+
$users = [];
73+
}
74+
}
75+
$endDate = date('Y-m-d H:i:s');
76+
$time = strtotime($endDate) - strtotime($startDate);
77+
$message = 'Time to bulk insert 1000000 users: ' . $time . ' seconds';
78+
return $message;
79+
});
80+
81+
82+
Route::get('/users/{cxn?}', function ($cnx = 'mysql') {
83+
$users = User::on($cnx)->limit(11)->get();
84+
return $users;
3685
});

0 commit comments

Comments
 (0)