【问题标题】:Too few arguments to function CI_DB_query_builder::join(), 1 passed and at least 2 expected using join table in PHP(Codeigniter)函数 CI_DB_query_builder::join() 的参数太少,通过 PHP(Codeigniter)中的连接表至少需要 2 个参数
【发布时间】:2018-07-04 11:49:42
【问题描述】:

我正在尝试减少模型中的所有方法,因此我决定使其成为动态的。已完成为插入、更新、获取、删除创建动态,但在创建用于连接 2 个表的动态时遇到问题。

遇到错误:

"函数 CI_DB_query_builder::join() 的参数太少,通过了 1 个 在 C:\xampp\htdocs\snapmatic\application\models\Crud_model.php 上线 130 和至少 2 预期"`

注意:在这个项目中,我正在做的模块是“关注”,用户可以关注特定的人(如 instagram)。我有 2 个表名为:用户和关注。

在我的“下表”中,我的列是:id、user_id 和 user_following。 user_id 是帐户登录的位置,而 user_following 是您关注的帐户。

Scenario: In my table users, you have 2 data: Person 1 and Person 2
Person 1 account is logged in then Person 1 followed Person 2.

在第 1 个人点击按钮后,在我的关注表中将如下所示:

id: 1 user_id: 1 user_follow:2

这是我的控制器

$id = $this->session->user_id;
$where = array('following.user_id => $id');
$join  = array('following,following.user_following = users.id');
$fetch_following = $this->Crud_model->join_table('*','users',$where,$join);

//Also tried these
//$where = "('following.user_id', $id)";
//$where = "'following.user_id', $id)";
//$where = "('following.user_id, $id')";
//$where = "'following.user_id, $id'";
//$join  = "'following,following.user_following = users.id'";
//$join  = "('following,following.user_following = users.id')";
//$join  = "('following','following.user_following' = 'users.id')";

型号

public function join_table($tag,$table,$where,$join){
    // public function join_table($id){

        $this->db->select($tag);
        $this->db->from($table);
        $this->db->join($join);

        $this->db->where($where);
        // $this->db->select('*');
        // $this->db->from('users');
        // // $this->db->group_by('invoice_number'); 
        // $this->db->join('following','following.user_following = users.id');
        // $this->db->where('following.user_id', $id);
        $result = $this->db->get();
        return $result->result();
    }

评论部分正在工作,但我想让它成为动态的。

问题:如何制作动态加入表格的方法?

【问题讨论】:

  • 我想是 $join = array('following' ,'following.user_following = users.id'); 看看 quotes 使你的数组​​成为一个包含 2 个元素的数组?
  • 其实先生,我也试过了,但有同样的错误。

标签: php codeigniter codeigniter-3 codeigniter-query-builder


【解决方案1】:

希望对您有所帮助:

join tableon 条件保存到两个不同的变量中,$where 应该是一个具有如下键值对的数组:

你的控制器应该是这样的:

$id = $this->session->user_id;
$where = array('following.user_id' => $id);
$join_table = 'following';
$join_on = 'following.user_following = users.id';

$fetch_following = $this->join_table('*','users',$where,$join_table,$join_on);

你的join_table 方法应该是这样的:

public function join_table($tag,$table,$where,$join_table,$join_on)
{
  $this->db->select($tag);
  $this->db->from($table);
  $this->db->join($join_table,$join_on);

  $this->db->where($where);  
  $query = $this->db->get();
  return $query->result();
}

更多:https://www.codeigniter.com/user_guide/database/query_builder.html

【讨论】:

  • 没有更多错误,但它只是一个空数组。
  • 这是因为您的查询没有数据所以是一个空数组
  • 我的回答是否帮助您解决了您给定的问题?如果是,请不要犹豫,将我的回答选为绿色并投票
  • 我的表中有 2 个数据。如果我在我的模型部分取消注释我的代码它的工作,我正在获取数据。
  • 哦,谢谢。所以你把表和 join_on 分开了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多