我有一个功能,我在整个地方用它来吸引用户朋友离开数据库。但是我最近不得不删除一些用户在论坛上引起问题,这给了我一些“试图获取非对象属性”的问题,并且我已将其追溯到此功能。
function isFriend($user_id, $friend_id){
$this->db->from('friends');
$this->db->where('user_id', $user_id);
$this->db->where('friend_id', $friend_id);
$this->db->where('removed', 0);
$query = $this->db->get();
$result = $query->result();
return count($result);
}
有谁知道如何调整此功能以忽略已删除的用户?
答案 0 :(得分:1)
如果你所做的只是计算结果,你可以尝试这样做:
$this->db->count_all_results();
像这样:
function isFriend($user_id, $friend_id)
{
$num = $this->db
->from('friends')
->where('user_id', $user_id)
->where('friend_id', $friend_id)
->where('removed', 0)
->from('TABLE_NAME')
->count_all_results();
return $num;
}
如果没有结果,它应返回0
,而当前函数中的$query
(我相信)可能不会返回您可以调用result()
的对象(因此您的错误)
http://codeigniter.com/user_guide/database/active_record.html
$这 - > DB-> count_all_results();
允许您确定特定Active中的行数 记录查询。查询将接受Active Record限制器,例如 where(),or_where(),like(),or_like()等。示例:
echo $this->db->count_all_results('my_table'); // Produces an integer, like 25 $this->db->like('title', 'match'); $this->db->from('my_table'); echo $this->db->count_all_results(); // Produces an integer, like 17
可能有“更好”的方式,但不知道应用程序的内容很难说。
答案 1 :(得分:0)
为什么当你将标志“删除”时,你是否实际将它们从数据库中删除? 无论如何,我认为你还应该删除那些被删除用户的连接,我没有看到该功能有任何问题。
尝试改变功能,这只是一个黑客,这不是一个好习惯。
答案 2 :(得分:0)
我认为函数本身看起来很好,但是当查询返回0结果时,似乎可能会导致错误。
如果在好友表或用户表中删除了col?
也许您应该对users表执行连接。