2016-03-21 18 views
1

biz iki tablo, ekran görüntüsü eklenmişnasıl ben mysql son cevap konuşmaları düzenlemek katılmak kullanarak bunu

this image contains every single piece of message sent

bu tablo olarak adlandırılır

this image contacts details of a every conversation started by a student to teacher

mesaj olarak adlandırılan bu tablo konuşmalar

Artık her öğrenci bir ileti gönderdiğinde, ileti tabloları c convo benzersiz kimliği aracılığıyla onversation var ve daha sonra sender_id ile veritabanındaki mesajı, tek bir öğrenci ve öğretmen sohbeti için benzersiz olan, convo öğretmeninin benzersiz kimliği olarak receiver_id öğrencinin benzersiz kimliği olarak koyar.

Yapmak istediğimiz şey, facebook gibi konuşmaları görüntülemek, en son mesajın en son iletiyle en üstte yer alacağını, en son mesajı created_at ile bulacağız ve tabii ki öğrenci sadece konuşmaları görebilir o, biz

Şimdiye kadar bu geldi bizim arka uç için bir çerçeve CodeIgniter kullanırken bize yardımcı, bunun için uygun bir mySQL sorgusu yazamadı, buradan çıkamıyor, başladı, ancak

çalışmıyor gibi görünüyor
$this->db->select('*'); 
$this->db->from($this->conversation_table_name); 
$this->db->join($this->message_table_name,'conversation.convo = messages.convo'); 
$this->db->where('conversation.student',$student_number); 
$query = $this->db->get(); 
+1

Sadece ord ayarlamanız gerekebilir er, $ this-> db-> order_by ("created_at", "desc") kullanarak; 'Bu mesajlar, en yeni ilk – gabe3886

+0

ile oluşturulan zamana göre sipariş verilecektir. Evet, bir order ayarlamanız gerekir (created_at tarafından) veya DESC sıralamasında id alanı ile). Ayrıca, katılma alanım olarak bir varchar kullanacağımdan emin değilim. – cfnerd

cevap

0
$this->db->select('*'); 
$this->db->from($this->conversation_table_name); 
$this->db->join($this->message_table_name,'conversation.convo = messages.convo'); 
$this->db->where('conversation.student',$student_number); 
$this->db->group_by("conversation.sender_id"); 
$this->db->order_by("messages.created_at", "desc"); 
$query = $this->db->get(); 
+0

Merhaba bu çözüm işe yarıyor, öğretmen öğretmenlerinden öğretmen ismini nasıl alabilirim? basit sütun teacher.teacher_name gibidir, benzersiz bir teacher_id var – runningmark

+0

Önce message_id mesaj tablosuna ekleyin. Daha sonra bu koşuldan önce $ this-> db-> join ($ this-> teachers_table_name, 'messages.teacher_id' = 'teachers.teacher_id'); –

İlgili konular