Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter活动记录在子查询中的何处_Php_Mysql_Codeigniter_Activerecord - Fatal编程技术网

Php CodeIgniter活动记录在子查询中的何处

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 =

如何使用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 = '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
,从
中选择
,就像在每个活动记录中一样,然后它会从活动记录中删除
单引号
。欢迎