最近时间的codeigniter搜索查询

时间:2015-12-07 10:28:46

标签: php mysql codeigniter

我在db messages和messages_recipient

中有两个表

消息表包含以下列

message_id user_id message created_at

messages_recipient表包含以下列

message_recipient_id user_id message_id

发件人ID存储在邮件中,接收者ID存储在messages_recipient

我有以下查询来获取发送给登录用户的消息

$this->db->select('messages.user_id');
  $this->db->from('messages');
  $this->db->join('messages_recipients','messages.message_id= messages_recipients.message_id');
  $this->db->where( 'messages_recipients.user_id',$sende_id );
  $query = $this->db->get();

它会将所有消息发送给用户,但我想获取最近发送给用户的消息来自同一用户

2 个答案:

答案 0 :(得分:1)

  $this->db->select('messages.user_id');
  $this->db->from('messages');
  $this->db->join('messages_recipients','messages.message_id = messages_recipients.message_id');
  $this->db->where( 'messages_recipients.user_id',$sende_id );
  $this->db->order_by("created_at", "desc");
  $this->db->limit(2);
  $query = $this->db->get();

可能这可能会有所帮助.. 按功能使用顺序并限制代码点火器,您将实现您想要的效果。

答案 1 :(得分:0)

您可以使用

之类的查询
$this->db->select('messages.user_id');
  $this->db->from('messages');
  $this->db->join('messages_recipients','messages.message_id= messages_recipients.message_id');
  $this->db->where( 'messages_recipients.user_id',$sende_id );
  $this->db->order_by("created_at", "desc");
  $this->db->limit(1);

就在这里,我按照日期的降序排列你的行,然后选择第一行,即最新一行。

希望这可以解决您的问题。