Codeigniter活动记录左连接问题

Jin*_*iel 2 php mysql activerecord codeigniter left-join

我有两个表'accounts_transactions'和'accounts_bills_transactions'.我必须使用codeigniter的活动记录来连接这两个.但是用于连接的键列的名称是不同的.所以我没有从输出中的左表中获取键列.我应该写什么查询来获取键结果中包含左表中的列.我的代码是

    $this->db->select('*');
    $this->db->from('accounts_transactions');
    $this->db->join('accounts_bills_transactions', 'accounts_transactions.id = accounts_bills_transactions.transaction_id','left');
    $query = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

所以,正如你看到用于加入的关键列是左表中的id和第二个表中的transaction_id.问题是我没有从结果中的左表中获取id.但是我得到了所有其他列.我假设问题是因为用于连接的列名不同.列名都没有命名为'id'.那么如何从结果中包含的左表中获取id.

Dam*_*rsy 5

你可以别名他们:

$this->db->select('accounts_transatctions.*, account_transactions.id AS a_id,
                   accounts_bills_transactions.*, 
                   account_bills_transactions.id AS ab_id');
$this->db->from('accounts_transactions');
$this->db->join('accounts_bills_transactions', 'accounts_transactions.id = accounts_transactions.transaction_id','left');
$query = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

这两个ID现在可用作a_idab_id(或您选择的任何别名)

注意:我不确定你是否可以在AR中使用别名而不避免转义(暂时没有使用CI).如果由于这个原因你得到任何错误,只需传递false第二个参数$this->db->select():

$this->db->select('...', false);
Run Code Online (Sandbox Code Playgroud)