CodeIgniter条件 - 多个表

时间:2014-01-22 17:42:55

标签: sql codeigniter if-statement

我坚持有条件的逻辑,我需要一些帮助。我正在构建一个项目协作平台,用户可以在其中查看打开的项目并将它们组合成一个团队。我已经使加入功能正常工作但我希望有条件设置,如果他们已经是该项目组的成员,则不显示“加入此团队”按钮。我可能已经有了一些需要做的事情,但我不完全确定如何去做。 (我帮助编写了我已经实现的代码)以下是加入项目的代码:

//控制器

    public function join($project){

    // Set Var
    $email = $this->session->userdata('email');

    // Join User
    $this->project_model->join_project($project, $email);

    //Redirect to Project
    redirect('projects');

}

//在模型中运行以获取已加入的成员并插入

        public function get_team_members($id){

        $this->db->select('team_members.user_id, users.first_name, users.last_name, users.location');
        $this->db->from('team_members');
        $this->db->where('team_members.project_id', $id);
        $this->db->join('users', 'users.id = team_members.user_id');

        return $this->db->get()->result_array();

    }


    public function join_project($id, $email){

        // Get UserID
        $this->db->select('id');
        $this->db->from('users');
        $this->db->where('email', $email);
        $user = $this->db->get()->row_array();

        // Set Insert Data
        $data = array(

            'project_id' => $id,
            'user_id' => $user['id']

        );

        // Insert into Team DB
        $this->db->insert('team_members', $data);

    }   

//视图

<div class="large-4 columns widget">
        <div class="row collapse top-margin">
            <div class="large-4 columns"></div>
            <div class="large-8 column bottom-spacer">

<?php $link = base_url()."project/join/".$project['project_id']; ?>
<a href="<?php echo $link; ?>" class="button primary radius extrawide"><h5>Join this Team</h5></a>
            </div>
        </div>

//查看团队成员

foreach ($team as $member){ ?>

                <!-- Team Member #1 -->
                <div class="row collapse">
                    <div class="large-4 columns">
                        <img class="left" src="<?php echo base_url();?>assets/img/user.png" alt="user img">
                    </div>
                    <div class="large-8 columns member-name">
                        <p class="name"><strong><?php echo $member['first_name']." ".$member['last_name']; ?></strong></p>
                        <p><span><?php echo $member['location'];?></span></p>
                    </div>
                </div>

                <?php } ?>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用两种方法。

方法1.在模型中创建函数is_team_member($user_email, $team_id)。如果用户存在,则返回true,否则返回false。将返回的值传递给控制器​​进行查看。根据值,您可以使用if条件隐藏按钮。

方法2.您可以在查看foreach循环中检查用户电子邮件。如果$email == $member["email"],请将标志设置为隐藏按钮。但在这种情况下,您的按钮应位于成员列表下。 Bur,正如我们在评论中所讨论的那样,您的成员列表在列表上方。因此,创建一个变量以将foreach html内容存储为字符串。您可以在按钮上方运行foreach循环并在按钮后选择内容。现在基于该标志,您可以隐藏按钮。

方法的前景 - 1:

在Controller中,团队成员列表功能。

public function index($team_id){

    // Set Var
    $email = $this->session->userdata('email');


    $data["team"] = $this->project_model->get_team_members($team_id);
    $data["is_joined_user"] = $this->project_model->is_team_members($team_id,$email);
    //load view
    $this->view->load("view_name", $data);
}

在模型中:

public function is_team_members($team_id,$email)
{
   $this->db->select('*');
   $this->db->from('team');
   $this->db->join('users', 'users.id = team.user_id');
   $this->db->where("user.email",$email);
   $res = $this->db->get();
   if($res->num_rows()>0)
      return true;
   else
     return false;   
}

在视图中:

<?php
if(! $is_joined_user)
{
?>

<a href="<?php echo $link; ?>" class="button primary radius extrawide"><h5>Join this Team</h5></a>
<?php
}
?>