Sắp xếp bài viết theo comments gần nhất hoặc thời gian viết bài trong SQL và Laravel
TIL
633
Laravel
25
SQL
15
White

Thành Minh viết ngày 30/07/2017

Sắp xếp bài viết giống như cách sắp xếp trong các diễn đàn

Cấu trúc các bảng

Bảng posts

$table->increments('id');
$table->string('title');
$table->text('content');
$table->timestamps();

Bảng post_comment:

$table->increments('id');
$table->integer('post_id')->unsigned();
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
$table->text('content');
$table->timestamps();

Khi đó ta có quan hệ giữa bảng postspost_comments là One to Many.

Sắp xếp trong SQL:

SELECT *
FROM posts AS p
LEFT JOIN post_comments AS c on c.post_id = p.id
GROUP BY p.id
ORDER BY COALESCE(GREATEST(p.created_at, MAX(c.created_at)), p.created_at) DESC

Sắp xếp trong Laravel

DB::table('posts')
->leftJoin('post_comments', 'post_comments.post_id', '=', 'posts.id')
->groupBy('posts.id')
->orderByRaw('COALESCE(GREATEST(posts.created_at, MAX(post_comments.created_at)), posts.created_at) DESC')
->select('posts.*')

ThanhMinh 31-07-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Thành Minh

6 bài viết.
40 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
33 22
1. Các thư viện cần dùng Thư viện (Link) để xử lí file Zip. Thư viện (Link) để xử lí file Rar. Thư viện (Link), thư viện rarfile bắt buộc đi kèm v...
Thành Minh viết hơn 1 năm trước
33 22
White
26 3
V8 hay còn gọi là Chrome V8, là một Javascript engine được phát triển bởi Chromium Project, mục đích ban đầu là dành cho Google Chrome nói riêng và...
Thành Minh viết 11 tháng trước
26 3
White
8 2
Mỗi năm thì lại có một bản ECMAScript được thêm vào, cùng với đó là thêm kha khá tính năng mới, bài viết này sẽ kể đến một vài tính năng nhỏ nhưng ...
Thành Minh viết 10 tháng trước
8 2
Bài viết liên quan
White
23 0
(Ảnh) Slow query là gì? Khi các câu query chậm hơn một thời gian nhất định tùy theo bạn định nghĩa, ví dụ chậm hơn 50ms, thì các câu query đó đư...
Triet Pham viết hơn 1 năm trước
23 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
40 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!