【问题标题】:codeigniter search query with most recent time最近时间的codeigniter搜索查询
【发布时间】:2016-03-11 22:13:40
【问题描述】:

我在 db messages 和 messages_recipient 中有两个表

消息表有以下列

message_id user_id message created_at

messages_recipient 表有以下列

message_recipient_id user_id message_id

sender id 存储在 messages 中,receiver 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();

它提供了发送给用户的所有消息,但我想获取最近从同一用户发送给用户的消息

【问题讨论】:

  • most recent 你问的方式是什么,即时间差异小于分钟或其他什么???
  • 表示在 db 中是最后一个,即来自同一用户的 2 条消息,它应该只查看比其他时间更长的消息

标签: php mysql codeigniter


【解决方案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();

这可能会有所帮助.. 在code-igniter中使用order by function和limit,你会得到你想要的。

【讨论】:

    【解决方案2】:

    你可以使用类似的查询

    $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);
    

    我只是在这里按日期的降序排列您的行并选择第一行,即最新的一行。

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

    【讨论】:

    • 亲爱的 Abbas ,您忘记了从数据库中获取结果的查询。请更新答案并使用: $this->db->get();功能
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 2012-05-15
    • 2017-11-05
    • 2017-11-19
    • 1970-01-01
    • 2011-10-09
    • 2011-08-26
    • 2017-05-09
    相关资源
    最近更新 更多