我正在使用Codeigniter创建一个社交网络,并且当您已经关注某个人时,我正试图让用户视图显示一个按钮我该怎么做?
模型
<?php
class User_model extends CI_Model {
function get_All(){
$this->db->select('*');
$this->db->from('membership');
// $this->db->join('following', 'following.id = membership.id');
$q = $this->db->get();
if($q->num_rows() > 0) {
foreach ($q->result() as $rows) {
$data[] = $rows;
}
return $data;
}
}
答案 0 :(得分:0)
这是一点点工作。假设可以搜索所有用户,您可能会列出所有用户以及“朋友”的列表。所有用户然后你会比较两个比较它们。以下是一个想法:
Database Members: All members |ID_User|...other user stuff...
Database Followers: Lists all friendship |ID_User|ID_Follower|
您需要两个查询:一个用于所有,一个用于追随者,其中ID_User = $ UserID。当你按照你的建议浏览所有成员时,你可以
function get_Followers(){
$friends= $this->db->query('SELECT * FROM Followers WHERE ID_User=$UserID');
$follow_array=$row->ID_Follower;
}
现在:
$follow_array //A list of all friends.
$q //Your original list of members
然后你可以使用:
if($q->num_rows() > 0) {
foreach ($q->result() as $rows) {
if(in_array($rows->ID_Follower, $Follower_array))
{
$data=true;
}
else
{
$data=false;
}
}
return $data;
}
但请注意,这可能是一项服务器密集型操作。
答案 1 :(得分:0)
我将假设您正在谈论访问个人资料,如果您正在关注该人,则会看到一个按钮。这只需要视图中的一个查询和逻辑。
基于这种假设,您已经将您正在查看的个人资料的人传递给了视图,因此您只需要一个观看者所关注的人员列表来比较该ID。
我不确定您的代码中的查询是什么,因为没有数据库的描述所以我将按照表格的布局方式给出代码,这是一个用户表和下表只是用户的联接表。假设下面的表有3列id,userId,followId,其中userId是你,followId是你所关注的人。
控制器
$data['following'] = $this->modelName->getFollowing($userId); //pass current userId
$this->load->view('viewName',$data);
型号:
public function getFollowing($userId)//$userId to be passed as the person viewing.
{
$this->db->where('userId',$userId);
$data = $this->db->get('following');
if($this->db->num_rows() > 0)
{
return $data;
} else {
$data=array();
$return $data;
}
然后在视图中,这是一个简单的if语句。
if(in_array($profileId,$following))
{
echo button;
}