Php Codeigniter活动记录左连接问题
我有两个表“账户交易”和“账户票据交易”。 我必须使用codeigniter的活动记录左连接这两个。但是用于连接的键列的名称不同。因此,我没有从输出中的左表中获取键列。我应该编写什么查询以从结果中包含的左表中获取键列。 我的代码是Php Codeigniter活动记录左连接问题,php,mysql,codeigniter,activerecord,left-join,Php,Mysql,Codeigniter,Activerecord,Left Join,我有两个表“账户交易”和“账户票据交易”。 我必须使用codeigniter的活动记录左连接这两个。但是用于连接的键列的名称不同。因此,我没有从输出中的左表中获取键列。我应该编写什么查询以从结果中包含的左表中获取键列。 我的代码是 $this->db->select('*'); $this->db->from('accounts_transactions'); $this->db->join('accounts_bills_transa
$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();
因此,正如您所看到的,这里用于连接的关键列是,左表中的id和第二个表中的事务\ id。问题是我没有从结果中的左表中获取id。但我获取的是所有其他列。我假设问题是因为用于联接的列名不同。即两个列名都没有命名为“id”。那么如何从结果中包含的左表中获取id呢结果。您可以将它们别名为:
$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();
这两个id现在可用作a_id
和ab_id
(或您选择的任何别名)
注意:我不确定您是否可以在AR中使用别名而不避免转义(有一段时间没有使用CI)。如果因此而出现任何错误,只需将false
作为$this->db->select()的第二个参数传递:
如果您混淆了使用$this->where或$this->join,可以尝试使用此选项
$query = $this->db->query("select ......");
return $query;
你的问题很简单。您可以使用此查询
$query = $this->db
->select('at.*')
->select('abt.id as abt_id');
->from('accounts_transactions at');
->join('accounts_bills_transactions abt', 'at.id = abt.transaction_id','left');
->get()
->result();
当在联接中使用同一列时,它只选择一个。您需要将alise指定给第二个表中的另一列。最佳实践是使用这样的结构
accounts_transatctions
--------------------------
accounts_transatctions_id
other_columns
accounts_bills_transactions
---------------------------
accounts_bills_transactions_id
accounts_transatctions_id
other_columns
您可以尝试列出select中的所有列。您确定您的查询也可以吗?我的意思是,也许你不想要左连接…我需要左连接:)这是正确的吗?accounts\u transactions.id=accounts\u transactions.transaction\u id,不是吗accounts\u transactions.id=accounts\u bills\u transactions.transaction\u id,您加入到同一个表中…是的,这是一个输入错误。我需要的查询是accounts\u transactions.id=accounts\u bills\u transactions\u transactions\u id,它正在生成模糊列错误
accounts_transatctions
--------------------------
accounts_transatctions_id
other_columns
accounts_bills_transactions
---------------------------
accounts_bills_transactions_id
accounts_transatctions_id
other_columns