Phương thức nào được sử dụng để lấy tất cả các bản ghi từ cơ sở dữ liệu trong laravel?

Hôm nay chúng ta sẽ tìm hiểu cách lấy bản ghi từ Mysql bằng jquery ajax trong laravel 9 mới nhất. Jquery Ajax là một lựa chọn tuyệt vời để sử dụng với MySQL vì nó cho phép bạn truy xuất các bản ghi mà không phải tải lại toàn bộ trang

Hồ sơ cơ sở dữ liệu ứng dụng của bạn sẽ tăng lên mỗi ngày. Là một nhà phát triển, chúng tôi gặp phải các vấn đề về hiệu suất và bộ nhớ máy chủ khi làm việc với các bản ghi bảng lớn. Trong blog này, chúng tôi sẽ xử lý các bản ghi bảng lớn và giải thích tầm quan trọng của phương pháp Eloquent chunk

Chúng tôi cần một ứng dụng demo để làm việc với các bản ghi lớn

1. Cài đặt Laravel

Như thường lệ, chúng ta sẽ cài đặt Basic Laravel Admin Panel cục bộ. Quản trị viên cơ bản này đi kèm với người dùng có vai trò và quyền

Bảng quản trị cơ bản của Laravel dựa trên Laravel Sail. Buồm là gì?

Tham khảo https. //github. com/balajidharma/basic-laravel-admin-panel#bước cài đặt và hoàn tất cài đặt

2. dữ liệu demo

Đối với bản ghi demo, chúng tôi sẽ tạo người dùng giả trên bảng người dùng bằng cách sử dụng trình tạo tệp Laravel. Để tạo một seeder, hãy thực hiện lệnh

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
0 Artisan

./vendor/bin/sail php artisan make:seeder UserSeederINFO  Seeder [database/seeders/UserSeeder.php] created successfully.

Mở tệp seeder đã tạo nằm trên

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
1 và cập nhật bằng mã bên dưới

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}

Bây giờ hãy chạy seeder bằng lệnh Artisan bên dưới. Sẽ mất thêm thời gian để hoàn thành việc gieo hạt

./vendor/bin/sail php artisan db:seed --class=UserSeeder

Sau lệnh Artisan, hãy xác minh người dùng đã tạo trên trang danh sách người dùng http. //máy chủ cục bộ/quản trị viên/người dùng

3. Xử lý hồ sơ lớn

Bây giờ chúng tôi sẽ xử lý hồ sơ người dùng lớn. Giả sử chúng ta cần gửi email thông báo ưu đãi Thứ Sáu Đen cho tất cả người dùng. Thông thường, chúng tôi tạo lệnh Artisan mới và gửi email bằng cách sử dụng công việc lập lịch biểu

Vấn đề về bộ nhớ

Chúng tôi sẽ tìm nạp tất cả người dùng và gửi email bên trong mỗi vòng lặp

$users = User::all();
$users->each(function ($user, $key) {
echo $user->name;
});

Nếu bạn có hàng triệu bản ghi hoặc nếu bộ sưu tập kết quả của bạn có nhiều nghĩa là dữ liệu quan hệ, máy chủ của bạn sẽ đưa ra lỗi Kích thước bộ nhớ cho phép hết byte

Để khắc phục sự cố này, chúng tôi sẽ xử lý dữ liệu giới hạn bằng cách lưu giới hạn vào cơ sở dữ liệu hoặc bộ đệm

Ví dụ. Lần đầu tiên chúng tôi tìm nạp 100 bản ghi và lưu 100 bản ghi đó vào bảng cơ sở dữ liệu.
Lần tới tìm nạp 100 đến 200 bản ghi và lưu 200 bản ghi đó vào cơ sở dữ liệu. Vì vậy, phương pháp này liên quan đến tìm nạp và cập nhật bổ sung. Ngoài ra, chúng tôi cần dừng công việc sau khi xử lý tất cả các bản ghi.

Laravel cung cấp giải pháp inbuild của Eloquent chunk method để xử lý các bản ghi lớn

4. Laravel Eloquent chunk method

Phương thức kiểm tra Laravel ELoquent truy xuất một đoạn nhỏ kết quả tại một thời điểm và đưa từng đoạn vào một Closure để xử lý

User::chunk(100, function ($users) {
foreach ($users as $user) {
echo $user->name;
}
});

5. Hiểu phương pháp chunk

Tôi sẽ tạo một chức năng trong bộ điều khiển người dùng và giải thích chi tiết phương pháp kiểm tra

Mở các tuyến đường/quản trị viên. php và thêm tuyến đường bên dưới

Route::get('send_emails', 'UserController@sendEmails');

Bây giờ hãy mở app/Http/Controllers/Admin/UserController. php và thêm phương thức

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
2

Không có đoạn.
Sau khi thêm đoạn mã dưới đây, hãy mở http. //trang localhost/admin/send_email

public function sendEmails()
{
$users = User::all();
$users->each(function ($user, $key) {
echo $user->name;
});
}

Mở bảng truy vấn Laravel Debugbar.

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
3 sẽ tìm nạp tất cả hơn 1000 bản ghi

Với phương thức chunk.
Thay chức năng tương tự bằng mã bên dưới và kiểm tra trang trong trình duyệt.

./vendor/bin/sail php artisan make:seeder UserSeederINFO  Seeder [database/seeders/UserSeeder.php] created successfully.
1

Phương thức chunk thêm giới hạn và xử lý tất cả các bản ghi. Vì vậy, nếu sử dụng chunk, nó sẽ xử lý bộ sưu tập 100 bản ghi tại thời điểm đó. Vì vậy, không còn vấn đề về bộ nhớ nữa

6. insert([ 'name' => Str::random(10), 'email' => Str::random(10).'@gmail.com', 'password' => Hash::make('password'), ]); } }}4 là gì?

Phương thức

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
4 này sẽ tự động phân trang kết quả dựa trên khóa chính của bản ghi. Để hiểu nó, hãy cập nhật lại phương thức
namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
2 với mã bên dưới

./vendor/bin/sail php artisan make:seeder UserSeederINFO  Seeder [database/seeders/UserSeeder.php] created successfully.
5

Bây giờ người dùng

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
7 được thêm vào điều kiện
namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
8 cùng với giới hạn 100

./vendor/bin/sail php artisan make:seeder UserSeederINFO  Seeder [database/seeders/UserSeeder.php] created successfully.
8

namespace Database\Seeders;use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i=0; $i < 1000; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
}
4 này được khuyến nghị khi cập nhật hoặc xóa các bản ghi bên trong
./vendor/bin/sail php artisan db:seed --class=UserSeeder
0 (trong vòng lặp)

7. Phần kết luận

Phương pháp Eloquent chunk là một phương pháp rất hữu ích khi bạn làm việc với các bản ghi lớn. Ngoài ra, hãy đọc về phương pháp kiểm tra bộ sưu tập

Làm cách nào để lấy dữ liệu từ cơ sở dữ liệu trong Laravel?

Để lấy dữ liệu từ cơ sở dữ liệu MySQL bằng laravel framework trước tiên chúng ta phải tạo một bảng trong cơ sở dữ liệu. .
StudViewController. php (ứng dụng/Http/Bộ điều khiển/StudViewController. php)
stud_view. lưỡi. php (tài nguyên/lượt xem/stud_view. lưỡi. php)
trang web. php (tuyến/web. php)

Làm cách nào để lấy tất cả dữ liệu từ bảng trong Laravel 8?

12 câu trả lời. Sắp xếp theo. .
1 - Sử dụng all() hoặc get(); . tất cả các();.
2 - Sử dụng mặt tiền DB. Đặt dòng này trước lớp trong bộ điều khiển sử dụng Illuminate\Support\Facades\DB; . .
3 - Sử dụng mặt tiền DB với lựa chọn

Phương pháp nào được sử dụng để tìm nạp tất cả các bản ghi trong trình tạo truy vấn?

fetchall() . Phương thức tìm nạp tất cả (hoặc tất cả các hàng còn lại) của tập kết quả truy vấn và trả về danh sách các bộ.

Truy vấn () trong Laravel là gì?

Trình tạo truy vấn cơ sở dữ liệu của Laravel cung cấp giao diện thuận tiện, trôi chảy để tạo và chạy các truy vấn cơ sở dữ liệu . Nó có thể được sử dụng để thực hiện hầu hết các hoạt động cơ sở dữ liệu trong ứng dụng của bạn và hoạt động hoàn hảo với tất cả các hệ thống cơ sở dữ liệu được Laravel hỗ trợ.

Phương thức nào sau đây trên Collection sẽ lấy tất cả các bản ghi từ nó trong Laravel?

Phương thức trung bình do Laravel Collection cung cấp trả về giá trị trung bình. Theo mặc định, nó sẽ cung cấp giá trị trung bình của tất cả các giá trị trong bộ sưu tập.

Làm cách nào để lấy dữ liệu từ cơ sở dữ liệu trong Laravel 9?

Cách Tìm nạp bản ghi từ MySQL bằng jQuery AJAX — Laravel 9 .
Bước 1. Tạo dự án Laravel 9
Bước 2. Cấu hình dự án Cơ sở dữ liệu
Bước 3. Cấu trúc bảng dự án
Bước 4. Mô hình dự án
Bước 5. Kiểm soát dự án
Bước 6. Tuyến đường dự án
Bước 7. Lượt xem dự án
Bước 8. Kết quả dự án