使用 codeigniter 在数据库中获取具有相同值的列

Posted

技术标签:

【中文标题】使用 codeigniter 在数据库中获取具有相同值的列【英文标题】:get column with the same value on the database using codeigniter 【发布时间】:2020-02-04 08:29:13 【问题描述】:

这是我的资源首先

正如您在我的数据库中看到的,我有一个 Referal_CodeReferral_Link

现在我在这里尝试的是,我想获得所有在Referal_Code 上具有相同值的Referral_Link

我知道我离我想要做的事情还很远,但我正在尽我最大的努力来完成这件事。 这是我到目前为止所尝试的

在我的model

public function get_same_referral_code()

   $this->db->select('referal_code');
   $this->db->where('referal_code', 'PoVsw0Epne');
   $query = $this->db->get('investor');
   if ($query->num_rows() > 0) 
       foreach ($query->result() as $row) 
            $data[] = $row;
       
       return $data;
    


还有我的controller

public function get_all()

    $data = array();
    $data['title'] = "Rewards";
    $data["data"] = $this->investor->get_all_investor();
    $data["get_all_flevel"] = $this->investor->get_all_first_level();
    $data["referrals"] = $this->investor->get_same_referral_code();
    $this->template->load('default_layout','contents','rewards',$data);

我在我的view 上这样称呼它

<?php 
    
    echo ($referrals[0][id]);
    echo ($referrals[0][firstname]);
    echo ($referrals[0][referal_code]);
    echo ($referrals[0][referral_link]);
     
?>

我的预期结果应该是这样的

谁能帮帮我。

编辑

我再次尝试过这种方式以获得我想要的东西。

首先我尝试获取所有referal_code

public function get_same_referral_code()
    
        $this->db->select('referal_code');
        $query = $this->db->get('investor');
        if ($query->num_rows() > 0) 
            foreach ($query->result() as $row) 
                $data[] = $row;
            
            return $data;
        
    

现在我将使用这个方法get_same_referral_code() 来检查是否 referral_linkreferal_code 上具有相同的值

public function get_same_referral_link()
    
        $this->db->select('referral_link');
        $this->db->where('referral_link','get_same_referral_code();');
        $query = $this->db->get('investor');
        if($query->num_rows() > 0)
        
            foreach($query->result() as $row)
            
                $data[] = $row;
            
            return $data;
        
    

但问题是我现在遇到了这个错误

消息:为 foreach() 提供的参数无效

【问题讨论】:

【参考方案1】:

我认为子查询会对你有所帮助

$SQL= "SELECT * FROM tableName WHERE referal_code EXISTS (SELECT DISTINCT Referral_Link FROM tableName)";
$query = $this->db->query($SQL);
return $query->result_array();

$SQL= "SELECT * FROM investor WHERE referral_link IN (SELECT DISTINCT referal_code FROM investor)";
$query = $this->db->query($SQL);
return $query->result_array();

【讨论】:

您好,先生。我更新了我的问题,并且有一个编辑部分。 我认为你所做的和我的概念相同,但是你的代码复杂度更高。我认为使用子查询比使用 2 功能更好。为什么当你得到更难的方法时选择更难的方法。 先生,我怎样才能在我的视图中显示它? 因为如果我尝试foreach($refs as $g) echo $g-&gt;referal_code;,我会收到此错误消息:尝试获取非对象的属性“referal_code” 我不认为它会起作用,因为子句 in/exists 需要单列来比较,如果你想回显名字,你可以在主查询中选择而不是在子查询中选择

以上是关于使用 codeigniter 在数据库中获取具有相同值的列的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter :获取具有唯一电子邮件的记录

在使用codeigniter并从curl获取数据时在ajax中添加href

消息:未定义的索引:获取列名时(两个具有相同列的表)Codeigniter

如何选择具有多个选择值的数据作为 where 子句? - Ajax Codeigniter

Codeigniter 上的动态相关下拉列表国家和州

使用 PHP/CodeIgniter 从具有多对多关系的两个表中显示数据