PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

ActiveRecord - pilih rekaman pertama dari setiap grup

Saya tidak yakin bagaimana Anda dapat memanggil most_recent_chat_received_from_connected_users , yang merupakan metode instance dari Conversation . Anda kelas, pada instance User tanpa mendapatkan kesalahan, tetapi saya akan menambahkan pencari khusus ke model Percakapan:

class Conversation < ActiveRecord::Base
  # ...

  def self.most_recent_for(user_id)
    select('DISTINCT ON (sender_id) *').where(reciever_id: user_id).order("sender_id, created_at DESC")
  end

  # For MySQL you could have used:
  #
  # def self.most_recent_for(user_id)
  #   where(reciever_id: user_id).group("sender_id").order("created_at DESC")
  # end

  # ...
end

Sekarang Anda bisa mendapatkan percakapan yang diinginkan di pengontrol Anda dengan:

@conversations = Conversation.most_recent_for(current_user.id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu PostgreSQL tidak mengembalikan apa pun

  2. Cara mencari di bidang json yang berisi array objek dengan Eloquent

  3. Lewati argumen baris perintah ke sql (Postgres)

  4. Ebean mencari nama urutan yang salah di Play Framework 2

  5. Panggil fungsi dengan tipe komposit sebagai argumen dari kueri asli di jpa