我的表名为messages
,其中包含一些行:
+---------+
| columns |
+---------+
| id |
| from |
| to |
| body |
| date |
+---------+
我想要的是检索我发送消息的用户列表或向我发送消息的用户。
public function get_users_m($where)
{
$this->db->select('*');
$this->db->from('messages');
$this->db->where($where); // to = my_id or from = my_id
$this->db->group_by('from, to');
return $this->db->get()->result_array();
}
我是使用Codeigniter制作的,但问题是当我回复时,例如C
,我得到A(我)发送消息给C
,C
发送消息给{{ 1}}而且我不希望我只想A
一次,因为如果我发送给他的信息不对,或者他是发送给我的那个人并不重要消息它仍然是同一个用户。
答案 0 :(得分:3)
这个怎么样?
public function get_users_m()
{
$my_id = 5; # some id
$this->db->select('*');
$this->db->from('messages');
$this->db->where('from == $my_id');
$this->db->or_where('to == $my_id'); # add this or_where Clause
$this->db->group_by('user_id');
$query = $this->db->get();
$result = $query->result_array();
return $result;
}
检查Tpojka
的评论答案 1 :(得分:1)
您正在使用user_id和profile_id。您已经提到哪个字段属于其他用户。是user_id还是profile_id。
让我们考虑其他用户ID是profile_id。
以下查询可以帮助您获得与您回复的不同的profile_id,或者您回复了他们但不回复了他们。
public function get_users_m($where)
{
$this->db->select('profile_id');
$this->db->from('messages');
$this->db->where('profile_id != your profile id');
$this->db->group_by('profile_id');
return $this->db->get()->result_array();
}