Cách lấy bản ghi mới nhất với nhóm BY trong Laravel

Trong hướng dẫn này, Cách lấy bản ghi cuối cùng từ bảng bằng PHP Laravel, tôi sẽ chỉ cho chúng ta hai cách để lấy hàng cuối cùng đơn giản của bảng cơ sở dữ liệu. Trong ví dụ đơn giản này, tôi sẽ sử dụng phương thức 3 laravel sau đây, ví dụ ở đây chỉ cho bạn Cách lấy bản ghi cuối cùng của bảng trong Laravel 5

1)first()
2)orderBy()
3)latest()
Ba điều đơn giản trên . và chúng ta có thể sử dụng phương thức mới nhất đơn giản để lấy bản ghi cuối cùng từ bảng cơ sở dữ liệu trong ứng dụng Laravel đơn giản.

Nhận bản ghi cuối cùng từ bảng bằng mệnh đề orderBy đơn giản

    $get_last_row=DB::table('products')->orderBy('id', 'DESC')->first();

Nhận bản ghi cuối cùng từ cơ sở dữ liệu bảng bằng phương pháp mới nhất

Tôi có bảng "mục" đơn giản sử dụng trong cơ sở dữ liệu và tôi chỉ muốn lấy bản ghi cuối cùng của "mục" trong bảng bản ghi. Trong ví dụ đơn giản đầu tiên, tôi sử dụng bản ghi mới nhất () với bản ghi đầu tiên () vì bản ghi mới nhất () sẽ chỉ tìm nạp bản ghi mới nhất đơn giản theo have new created_at thì bản ghi first() sẽ chỉ nhận được mỗi bản ghi duy nhất

	$get_last_row = DB::table('products')->latest()->first();

Sử dụng mới nhất() thuộc về trường created_at

$get_last_row = DB::table('items')->latest()->first();

Sử dụng orderBy() thuộc trường id

$get_last_row2 = DB::table('items')->orderBy('id', 'DESC')->first();

Sử dụng mới nhất() thuộc trường id

$get_last_row3 = DB::table('items')->latest('id')->first();

Laravel truy vấn bản ghi mới nhất

public function users()
{
    return $this->belongsToMany(User::class, 'message')->orderBy('id', 'desc');
}

Nếu chúng tôi muốn giới hạn tổng số người dùng được trả lại đơn giản và phần bổ sung khác ->take(10);

Laravel có một số cách để thẩm vấn cơ sở dữ liệu mà nó liên kết tới. Trong hướng dẫn này, chúng ta sẽ khám phá bốn cách mà bản ghi mới nhất (theo ngày giờ) có thể được lấy ra khỏi bất kỳ bảng cụ thể nào. Cho dù bạn thích sử dụng Eloquent hay raw SQL, bài viết này sẽ trả lời cả hai trường hợp sử dụng

Phương pháp 1

Phương pháp một sử dụng Eloquent và sử dụng hai thao tác quan trọng để lấy ra bản ghi mới nhất, ________ 10 và _______ 11. Phương thức

	$get_last_row = DB::table('products')->latest()->first();
0 sẽ lấy dấu thời gian ngày làm cột được chỉ định, trong trường hợp này là cột created_at. Sau đó, chúng tôi hướng dẫn giới hạn là 1 bằng cách sử dụng toán tử
	$get_last_row = DB::table('products')->latest()->first();
3, nghĩa là nó sẽ lấy ra bản ghi đầu tiên từ bộ sưu tập

PHP

$lastRecordDate = Product::all()->sortByDesc('created_at')->take(1)->toArray();

dd($lastRecordDate);

// OR

$lastRecordDate = Product::all()->sortByDesc('YOUR_COLUMN_NAME')->take(1)->toArray();

dd($lastRecordDate);

đầu ra

Cách lấy bản ghi mới nhất với nhóm BY trong Laravel

 

Phương pháp 2

Phương thức tiếp theo sử dụng một truy vấn SQL thô theo kiểu khá chính xác cho phương thức một. Một lần nữa, chúng tôi sẽ sử dụng sắp xếp và giới hạn để lấy bản ghi mới nhất. Trong cú pháp này,

	$get_last_row = DB::table('products')->latest()->first();
0 là 'order by' và
	$get_last_row = DB::table('products')->latest()->first();
1 là 'limit'

$lastRecordData = DB::select('select * from products order by created_at desc limit 1'); 

dd($lastRecordData);

// OR 

$lastRecordData = DB::select('select * from YOUR_TABLE_NAME order by YOUR_DATE_COLUMN desc limit 1'); 

dd($lastRecordData);

Điều này sẽ cho chúng ta kết quả tương tự của bản ghi mới nhất trong bảng nhưng ở dạng đối tượng –

đầu ra

Cách lấy bản ghi mới nhất với nhóm BY trong Laravel

Cách lấy bản ghi mới nhất với nhóm BY trong Laravel

Nếu chúng ta muốn chuyển đổi cái này thành một mảng, nó có thể được thực hiện với một dòng mã như tôi đã trình bày trong một bài viết về chuyển đổi các đối tượng thành mảng tại đây. –

Và bùng nổ, đó là hai phương pháp để lấy bản ghi mới nhất từ ​​​​bất kỳ bảng dữ liệu nào có cột DateTime. Hi vọng điêu nay co ich

Ok, vì vậy chúng tôi cần bản ghi mới nhất của từng nhóm từ cơ sở dữ liệu. Hoặc chúng tôi có thể nói rằng chúng tôi muốn các tin nhắn mới nhất của mỗi người dùng từ bảng

	$get_last_row = DB::table('products')->latest()->first();
6

Giả sử chúng ta có một bảng ________ 16 như

________số 8

Và kết quả cuối cùng của chúng tôi sẽ chứa như sau

id  user_id  content  is_read  created_at
1 1 .. 0 2018-05-23 23:00:00
3 2 .. 1 2018-05-23 23:00:005 3 .. 0 2018-05-23 23:00:00

Trong MySQL, rất có thể chúng ta sẽ viết truy vấn dưới dạng

Và trong Laravel nó sẽ được viết là

Nhưng các vấn đề với các truy vấn thô là

  • Đó là một truy vấn thô 😐
  • Khó thêm điều kiện
    	$get_last_row = DB::table('products')->latest()->first();
    
    8
  • Không thể sử dụng
    	$get_last_row = DB::table('products')->latest()->first();
    
    9 siêu hữu ích
  • Phạm vi toàn cầu sẽ không được thêm vào truy vấn 😭

Vì vậy, để giải quyết tất cả những vấn đề này, chúng ta cần đưa ra một truy vấn sử dụng trình tạo truy vấn

$get_last_row = DB::table('items')->latest()->first();
0 và sau đó chuyển đổi nó thành câu lệnh SQL thô. Đối với điều này, chúng tôi sẽ sử dụng phương pháp
$get_last_row = DB::table('items')->latest()->first();
1 như

Và điều gì sẽ xảy ra nếu chúng ta có các ràng buộc của truy vấn phụ mà chúng ta muốn thêm vào truy vấn chính. Đối với điều này, chúng ta có thể sử dụng phương pháp

$get_last_row = DB::table('items')->latest()->first();
2

Truy vấn cập nhật của chúng tôi sẽ như thế này

Điều này sẽ thêm các ràng buộc của truy vấn phụ vào truy vấn tham gia của cha mẹ

Bây giờ chúng tôi có thể sử dụng tất cả sức mạnh của tài hùng biện để viết các truy vấn phức tạp 😎

Thực hành tương tự tạo truy vấn hùng hồn trước và sau đó chuyển đổi nó thành SQL thô cũng có thể được thực hiện trong các tình huống khác

Hãy cho tôi biết nếu bạn thấy bài đăng này hữu ích trong phần bình luận hoặc bạn có bất kỳ nghi ngờ nào liên quan đến điều này

Làm cách nào để lấy bản ghi cuối cùng với nhóm trong laravel?

Làm cách nào để lấy bản ghi cuối cùng trong laravel? .
Sử dụng mới nhất() thuộc về trường created_at
Sử dụng orderBy() thuộc trường id
Sử dụng mới nhất() thuộc trường id

Làm thế nào để có được ngày cuối cùng trong laravel?

Bạn có thể sử dụng mới nhất(). DB. table('tbl')->latest()->first(); // coi trường created_at theo mặc định.