Php CodeIgniter活动记录在子查询中的何处
如何使用codeigniter活动记录在子查询中写入where_语句Php CodeIgniter活动记录在子查询中的何处,php,mysql,codeigniter,activerecord,Php,Mysql,Codeigniter,Activerecord,如何使用codeigniter活动记录在子查询中写入where_语句 $query = $this->db->query("SELECT SUM(a.transaction_payment_amount) FROM transaction_payment a WHERE a.transaction_link IN (SELECT transaction_link FROM transaction WHERE transaction_type =
$query = $this->db->query("SELECT SUM(a.transaction_payment_amount) FROM
transaction_payment a WHERE a.transaction_link IN
(SELECT transaction_link FROM transaction WHERE transaction_type = '22'");
$result = $query->result();
现在,如何将上述查询转换为CI活动记录
$query = $this->db->query("SELECT SUM(a.transaction_payment_amount) FROM
transaction_payment a WHERE a.transaction_link IN
(SELECT transaction_link FROM transaction WHERE transaction_type = '22'");
$result = $query->result();
我试过:
$this->db->select("SUM(a.transaction_payment_amount)");
$this->db->from('transaction_payment a');
$this->db->where_in('a.transaction_link', "SELECT transaction_link from transaction WHERE transaction_type = '22'");
$query = $this->db->get();
$result = $query->result();
但是它不起作用。试试这个
$this->db->where_in('a.transaction_link', "SELECT transaction_link from transaction WHERE transaction_type = '22'",false);
如果使用false,则它将从
中删除单引号,其中_in
条件Sharmas Answer应执行此操作,但如果希望完全支持查询生成器方法,则可以尝试此操作
$strSubQuery = $this->db
->select("transaction_link")
->from("transaction")
->where("transaction_type",22)
->get_compiled_select();
$query = $this->db
->select("SUM(a.transaction_payment_amount)", false)
->from('transaction_payment a')
->where_in('a.transaction_link', $strSubQuery, false)
->get();
您可以按照以下解决方案更改代码 更改您的查询
我希望这对你有帮助。谢谢 如果可能的话,就没有好处。它的可移植性并不比使用查询方法时更强。@BrianGottier好吧,我的查询只是一个例子,我的实际代码越来越长,越来越多的表和列越来越难读取,使用活动记录(如果速度相同)将更整洁、更容易读取。如果您的查询更长、更复杂,听起来你只需要使用格式/缩进来让它更容易阅读。@BrianGottier当然,出于某种原因,我还是更喜欢活动记录,只是想知道是否有可能在活动记录中执行查询。@Brian“查询生成器”的最大优点是,您可以轻松地将查询拆分为模型中的多个函数,并且仍然可以获得所需的结果。使用单个查询,除了可以创建独立于数据库的应用程序之外,这些好处是不存在的。。。“false”!,该死,这正是我要找的,我不知道有这个论点。谢谢!你也可以在
选择中使用false
,从中选择,就像在每个活动记录中一样,然后它会从活动记录中删除单引号
。欢迎