Tôi đang sử dụng Laravel và MySQL, và tôi có một bảng bài đăng đại diện cho bài đăng mà người dùng có thể nhận xét, bây giờ tôi muốn đặt bài đăng theo số lượng nhận xét của mỗi bài đăng trong tăng dần/giảm dần thứ tự, làm thế nào để làm điều này trong Laravel? Tôi không muốn thêm một trường trong bảng bài để theo dõi số lượng nhận xét của mỗi bài đăng, bởi vì việc cập nhật trường đó theo cách thủ công mỗi lần nhận xét hoặc nhận xét của nhận xét được thêm vào/xóa ổ đĩa của tôi ...Laravel MySQL orderBy đếm
Đây là cách tôi tạo bài viết của tôi bảng và comments bảng:
Schema::create('posts', function($table) {
$table->increments('id');
$table->string('title', 100)->unique();
$table->string('content', 2000);
$table->timestamps();
});
Schema::create('comments', function($table) {
$table->increments('id');
$table->string('content', 2000);
$table->unsignedInteger('post_id');
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade')->onUpdate('cascade');
$table->unsignedInteger('parent_id')->nullable();
$table->foreign('parent_id')->references('id')->on('comments')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
});
và đây là cách tôi mối quan hệ thiết lập giữa các bài viết và ý kiến trong mô hình bài viết của tôi:
public function comments() {
return $this->hasMany('Comment', 'post_id');
}
Và trong mô hình Comment:
public function post() {
return $this->belongsTo('Post', 'post_id');
}
Cảm ơn, tôi có thể thêm vào giả định của bạn, làm thế nào bạn sẽ phân trang bài viết SAU KHI phân loại chúng bằng cách sử dụng -> paginate ($ perPage)? – dulan
@dulan Đó có thể là một vấn đề nhưng tôi không phải chuyên gia Eloquent. Bạn có thể đặt một câu hỏi mới, có thể ai đó khác có giải pháp khác hoặc biết cách xử lý phân trang trong trường hợp này. Giải pháp đơn giản nhất là thêm cột truy cập như bạn đã nói lúc đầu và thêm trình kích hoạt vào cơ sở dữ liệu để cập nhật số này nhưng có thể cũng có các giải pháp khác. –
Tôi đang sử dụng sự kiện mô hình Laravel thay vì kích hoạt cơ sở dữ liệu, lý do tôi nói theo dõi số lượng bình luận theo cách thủ công là vì tôi đang sử dụng onDelete ('cascade'), vì vậy nếu nhận xét bị xóa, tất cả nhận xét con của nó đã bị xóa , sau đó tôi phải tính toán có bao nhiêu nhận xét con, nhận xét, lặp lại, đệ quy và bất cứ điều gì. Các sự kiện mô hình chỉ kích hoạt một lần cho nhận xét gốc bị xóa, nó không kích hoạt cho thác ... – dulan