0

私は 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;
      }
    }
4

2 に答える 2

0

ちょっとした作業です。すべてのユーザーを検索できると仮定すると、すべてのユーザーのリストと、すべてのユーザーの「友達」のリストを取得できます。次に、2 つを比較します。以下はアイデアです。

 Database Members: All members               |ID_User|...other user stuff...

 Database Followers: Lists all friendship   |ID_User|ID_Follower|

これには 2 つのクエリが必要です。1 つは全員用、もう 1 つは 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;
  }

ただし、これは非常にサーバー負荷の高い操作になる可能性があることに注意してください。

于 2013-03-07T21:54:00.797 に答える
0

人のプロフィールにアクセスすることについて話していると仮定します。その人をフォローしている場合は、ボタンが表示されます。ビュー自体に必要なクエリとロジックは 1 つだけです。

この仮定に従うと、あなたが見ているプロフィールの人をすでにビューに渡しているので、必要なのは、そのIDを比較するために視聴者がフォローしている人のリストだけです。

データベースの説明がないため、コード内のクエリが何をしているのかよくわかりません。そのため、テーブルをレイアウトする方法をコードに示します。これは、ユーザー テーブルと次のテーブルです。ユーザーの結合テーブル。次のテーブルに id、userId、followingId の 3 つの列があると仮定します。userId はあなたで、followingId はあなたがフォローしている人物です。

コントローラ

$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;
    }
于 2013-03-08T03:08:52.760 に答える