Mối quan hệ mongodb của laravel

Có rất nhiều lý do như vậy, nhưng điều quan trọng thường gặp nhất vẫn là vấn đề về cơ sở dữ liệu. Nơi bạn luôn cần phải lấy dữ liệu để xử lý mã.  

read data support

read data support

anh hùng đẹp trai

tôi thích như vậy

Vì thế bài này mình tập trung chủ yếu nói về cơ sở dữ liệu tối ưu.  

tôi thích như vậy

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

Truy xuất dữ liệu lớn

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

Giả sử bạn có 1 bảng bài đăng chứa cả vài triệu bản ghi (ví dụ bản ghi dữ liệu bài đăng của 1 mạng xã hội chẳng hạn) để lấy ra tất cả bản ghi trong bảng bài đăng, chúng ta có thể làm như sau

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

$posts = Post::all(); // when using eloquent
$posts = DB::table('posts')->get(); // when using query builder

foreach ($posts as $post){
 // Process posts
}

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

anh hùng ebudezain

anh hùng ebudezain

anh hùng ebudezain

đây là đoạn mã bạn thường thấy nếu muốn lấy tất cả dữ liệu của bài đăng, sau đó trong từng dữ liệu đó bạn sẽ xử lý thêm dữ liệu.  

read data support

Nếu bảng của bạn nhỏ thì không sao nhưng nếu bảng bạn cả triệu bản ghi thì sẽ tràn bộ nhớ. Bạn có thể tìm hiểu thêm về bộ nhớ khi sử dụng php apache trên mỗi luồng.  

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng đẹp trai

hùng thông minh lắm

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

Do đó để tránh trường hợp dữ liệu ảnh hưởng đến hiệu suất, bạn cần chọn tùy chọn như sau.  

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

tôi thích như vậy

read data support

1. chia to value with function chunk

hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng đẹp trai

hùng thông minh lắm

Tạm hiểu là thay vì bạn thao tác trên cả triệu bản ghi thì bạn chia bản ghi là ( 1 triệu chia 100 ) cụm . Nghĩa là bạn có  ( 1 triệu chia 100 )  lần truy vấn.

anh hùng đẹp trai

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

anh hùng ebudezain

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

tôi thích như vậy

when that you code as after.  

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

tôi thích như vậy

chunk hàm sẽ chia mảng thành nhiều cụm mỗi cụm tối đa là 100 phần tử. Và 1 hàm đóng tham số để thao tác trên từng cụm

hùng thông minh lắm

read data support

anh hùng đẹp trai

anh hùng ebudezain

anh hùng đẹp trai

2. Use con trỏ chuột với con trỏ

read data support

read data support

// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

anh hùng đẹp trai

Với cách này, nó đang sử dụng con trỏ để giảm tải bộ nhớ cần thiết để tăng hiệu suất làm việc. Lưu ý là con trỏ thì giảm dung lượng bộ nhớ chứ không phải là nó sẽ không bị tràn, bạn nên ưu tiên sử dụng chunk để tối ưu hóa công việc này

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

tôi thích như vậy

3. Tối ưu câu hỏi cần thiết

hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

anh hùng đẹp trai

read data support

Mục này thì tuỳ với mỗi câu truy vấn nhất định mà bạn nên thiết kế để nó khác đi để bạn có thể có câu truy vấn hoàn hảo ở mỗi cảnh hoàn hảo. Ví dụ.  

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

tôi thích như vậy

read data support

Cũng là option 1 là mình dùng chunk thì hay rồi, nhưng mà giờ mình thấy áp dụng chunkById được nên quất luôn nè.  

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

read data support

anh hùng đẹp trai

// when using eloquent
$posts = Post::chunkById(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunkById(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

tôi thích như vậy

tôi thích như vậy

tôi thích như vậy

anh hùng đẹp trai

anh hùng ebudezain

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

anh hùng ebudezain

read data support

Distribute query as after.  

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

hùng thông minh lắm

-- khi dùng chunk
select * from posts offset 0 limit 100
select * from posts offset 101 limit 100
-- khi dùng chunkById
select * from posts order by id asc limit 100
select * from posts where id > 100 order by id asc limit 100

anh hùng đẹp trai

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

 

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

tôi thích như vậy

anh hùng đẹp trai

tôi thích như vậy

read data support

Vì chunkById đang sử dụng id trường để sử dụng tiêu đề nên việc truy vấn sẽ nhanh hơn nhiều

read data support

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

Khi cơ sở dữ liệu của bạn có cột id (khóa chính) tăng tự động thì bạn nên sử dụng chunkById

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

anh hùng ebudezain

tôi thích như vậy

anh hùng ebudezain

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

Việc sử dụng 

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
4 và 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
5 sẽ chậm hơn và chúng ta nên cố gắng tránh sử dụng nó. Hiểu đơn giản thì 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
5 thường được sử dụng để phục vụ trong công việc phân trang hoặc để 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
7 toàn bộ các bản ghi trong Bảng một cách tuần tự và có giới hạn. Theo lý thuyết thì 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
5 sẽ ra lệnh cho 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
9 phải loại bỏ 
// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
0 kết quả đầu tiên NHƯNG thực tế thì 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
9 vẫn phải đọc và sắp xếp lại toàn bộ bản ghi. Nếu trong trường hợp có quá nhiều dữ liệu dẫn đến tham số công việc 
// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
0 của 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
5 sẽ rất lớn dẫn đến công việc 
// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
9 phải tìm hết toàn bộ các bản ghi phù hợp để sắp xếp lại và loại bỏ 
// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
0 bản ghi điều này sẽ ảnh hưởng rất lớn .  

hùng thông minh lắm

Select Unknown get field only

hùng thông minh lắm

tôi thích như vậy

tôi thích như vậy

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

hùng thông minh lắm

read data support

nếu 1 câu sql thông thường bạn chỉ lấy tiêu đề thôi mà trong bảng đó lấy cả nội dung văn bản trong khi cái nội dung văn bản đó nhập cả mùi vào đó thì không dễ gây tràn bộ nhớ php mà còn làm châmj khi truy vấn sql.  

anh hùng ebudezain

read data support

ahihi đồ ngốc nghếch thanh hùng nè

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
8

hùng thông minh lắm

anh hùng đẹp trai

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Pluck to get data is array instead of get collection

anh hùng ebudezain

anh hùng ebudezain

tôi thích như vậy

hùng thông minh lắm

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

Thông thường chúng ta sẽ làm việc với bộ sưu tập trong laravel và rất thuận tiện cho việc thao tác với dữ liệu. Nhưng điều này sẽ ảnh hưởng đến hiệu suất khi ứng dụng phải khởi động quá nhiều mô hình đối tượng. Do đó chúng ta nên ưu tiên sử dụng máy nhổ nếu dữ liệu chúng ta muốn lấy chỉ là 2 trường hoặc 1 trường.  

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

read data support

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

Ví dụ.  

anh hùng đẹp trai

tôi thích như vậy

anh hùng đẹp trai

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
9

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

hùng thông minh lắm

anh hùng ebudezain

tôi thích như vậy

Khi chạy đoạn mã trên, nó sẽ thực hiện những điều sau

  • Ngoại trừ chọn _______ 27, _______ 28 từ truy vấn của bảng _______ 29 trên cơ sở dữ liệu
  • Tạo một đối tượng 
    // when using eloquent
    $posts = Post::chunkById(100, function($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    
    // when using query builder
    $posts = DB::table('posts')->chunkById(100, function ($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    0 mới cho mỗi hàng mà nó đã truy xuất
  • Tạo 
    // when using eloquent
    $posts = Post::chunkById(100, function($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    
    // when using query builder
    $posts = DB::table('posts')->chunkById(100, function ($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    1 mới với 
    // when using eloquent
    $posts = Post::chunkById(100, function($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    
    // when using query builder
    $posts = DB::table('posts')->chunkById(100, function ($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    0 mô hình
  • Quay lại 
    // when using eloquent
    $posts = Post::chunkById(100, function($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    
    // when using query builder
    $posts = DB::table('posts')->chunkById(100, function ($posts){
        foreach ($posts as $post){
         // Process posts
        }
    });
    1

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

read data support

anh hùng đẹp trai

Nhưng nếu cần xuất ra chỉ là hai giá trị 

// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
7 và 
// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
8 , chúng có thể làm như sau

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

anh hùng ebudezain

// when using eloquent
foreach (Post::cursor() as $post){
   // Process a single post
}

// when using query builder
foreach (DB::table('posts')->cursor() as $post){
   // Process a single post
}
9

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

read data support

read data support

Khi chạy đoạn mã trên, nó sẽ thực hiện những điều sau

  • Ngoại trừ chọn _______ 27, _______ 28 từ truy vấn của bảng _______ 29 trên cơ sở dữ liệu
  • Tạo một mảng với 
    // when using eloquent
    foreach (Post::cursor() as $post){
       // Process a single post
    }
    
    // when using query builder
    foreach (DB::table('posts')->cursor() as $post){
       // Process a single post
    }
    7 là giá trị còn 
    // when using eloquent
    foreach (Post::cursor() as $post){
       // Process a single post
    }
    
    // when using query builder
    foreach (DB::table('posts')->cursor() as $post){
       // Process a single post
    }
    8 là khóa
  • Trả về mảng

ahihi đồ ngốc nghếch thanh hùng nè

hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Dem number of write, used count(id)

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

Nói cái này thì ai cũng biết nhưng không phải ai cũng làm. Nếu bạn cần đếm số lượng bản ghi thông thường, bạn sẽ làm như xuyên.  

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

hùng thông minh lắm

// when using eloquent
$posts = Post::chunkById(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunkById(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
5

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng ebudezain

read data support

Tránh truy vấn N+1 bằng háo hức tải

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

Tình trạng này trong laravel mình hay gặp nhất. Ngày càng áp dụng quan hệ hùng hồn vô tội vạ mà không có tính toán.  

anh hùng ebudezain

Thì nếu bạn search google sẽ ra rất nhiều nên là mình mô phỏng thay vì bạn có mã đoạn như sau.  

read data support

hùng thông minh lắm

// when using eloquent
$posts = Post::chunkById(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunkById(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
6

read data support

ahihi đồ ngốc nghếch thanh hùng nè

Thay vì query 1 lần author thì chúng ta chỉ có thể query đúng 1 lần nhưng dùng id in (

-- khi dùng chunk
select * from posts offset 0 limit 100
select * from posts offset 101 limit 100
-- khi dùng chunkById
select * from posts order by id asc limit 100
select * from posts where id > 100 order by id asc limit 100
1) thì lỡ có 1 triệu lần query vẫn đỡ hơn đúng hông.  

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Vì vậy chúng ta có toán tử như sau.  

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
0

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

Ngoài ra chúng ta còn truy vấn đường dẫn của eage loading, truy vấn điều kiện của phương thức tải mà bạn có thể google thêm

ahihi đồ ngốc nghếch thanh hùng nè

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

Tối ưu hóa theo hướng tránh truy vấn thừa

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

vấn đề là bạn truy vấn dữ liệu trong hành động của bộ điều khiển nhưng bên ngoài chế độ xem vì 1 quy tắc gì đó mà bạn không sử dụng đến ví dụ

hùng thông minh lắm

ahihi đồ ngốc nghếch thanh hùng nè

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

anh hùng ebudezain

anh hùng đẹp trai

Khi vào trang chủ, yêu cầu mà đã đăng nhập thì hiện ra những bài bạn đã thích.  

anh hùng đẹp trai

anh hùng ebudezain

hùng thông minh lắm

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
1

anh hùng ebudezain

Nhận xét là trường hợp user không đăng nhập thì lấy mặc định là 0 thì vẫn luôn truy vấn vào DB nên trường hợp user id = 0 là thừa query

ahihi đồ ngốc nghếch thanh hùng nè

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

read data support

hùng thông minh lắm

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Trường hợp này bạn nên tối ưu bằng cách if other thì hơn.  

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

tôi thích như vậy

anh hùng đẹp trai

tôi thích như vậy

hùng thông minh lắm

hùng thông minh lắm

anh hùng ebudezain

Hoặc có trường hợp bạn truy vấn vài câu truy vấn gần giống nhau chỉ khác tham số truyền vào thì gộp nó thành 1 câu truy vấn tổng rồi khi có cả dữ liệu cục bộ thì muốn dùng thì lọc ra rồi chắc dùng => như thế nào cũng sẽ tiết kiệm điện năng

anh hùng đẹp trai

Đánh index cho các cột được truy vấn thường xuyên

tôi thích như vậy

tôi thích như vậy

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng ebudezain

tính toán dự án mà bạn có quyết định về chỉ mục. Bạn nên cân nhắc việc đánh index sẽ làm cho db nó chậm khi chèn và cập nhật. Ở đây giả sử mình đánh index cho cột status là string thì laravel support cho mình khi thiết kế migration như sau.  

anh hùng ebudezain

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
2

hùng thông minh lắm

anh hùng đẹp trai

Lấy bản ghi mới nhất dựa vào id thay vì dựa vào ngày tạo_at

hùng thông minh lắm

created_at nó là một chuỗi định dạng đặc biệt nhưng về cơ bản nó sẽ chậm hơn vì bạn truy vấn đơn hàng theo ngày tháng và đơn hàng theo id. Ví dụ.  

anh hùng đẹp trai

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

// when using eloquent
$posts = Post::chunk(100, function($posts){
    foreach ($posts as $post){
     // Process posts
    }
});

// when using query builder
$posts = DB::table('posts')->chunk(100, function ($posts){
    foreach ($posts as $post){
     // Process posts
    }
});
3

ahihi đồ ngốc nghếch thanh hùng nè

hùng thông minh lắm

Phân trang với con trỏ chuột

anh hùng đẹp trai

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Giả sử bạn đang viết 1 api không cần tổng trang ví dụ như thằng facebook phần notification khi bấm vô tab đó thì cũng chỉ load lazy ra thôi chứ không biết có tổng cộng bao nhiêu notification

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bạn nên sử dụng phân trang thay vì truyền tham số trang bao nhiêu thì bạn truyền con trỏ giống như 1 id là điểm bắt đầu để phụ trợ phân trang cao hơn. Bạn có thể tra google để hiểu rõ hơn. you can read more at here about idea phân trang. https. // ẩn danh. com/blog-developer/truoc-gio-lam-phan-trang-sai-bet-ma-no-con-cai-mongodb-2021020172088814