联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
在控制器里面统计字段‘length’的总和,请问系统是否有现成函数调用呢
类型:迅睿CMS 更新时间:2022-01-07 15:07:59

我现在需要在控制器里面统计字段‘length’的总和,请问系统是否有现成函数调用呢,需要配合where或者可以附加限制条件的方法。

我写了一个可以实现,但是不知道取出所有数据然后PHP进行求和是不是合理和效率最优化。求指点。代码如下:

public function set_length() {
 
     $id = \Phpcmf\Service::L('Input')->get('id',);
  $rows = \Phpcmf\Service::M()->table(dr_module_table_prefix(APP_DIR).'_form_son')->select('length')->where('status','1' and 'cid',$id)->getAll();
  \Phpcmf\Service::M()->table(dr_module_table_prefix(APP_DIR))->update($id, [
   'length' => array_sum(array_column($rows,'length'))
  ]);
     $this->_json(1, dr_lang('更新完成,即将刷新页面'));
 }

还有一个,我前端调用了js的dr_ajax_confirm_url()方法。我想执行完刷新当前页面应该如何操作呢,我现在是写:

'url' => "javascript:dr_ajax_confirm_url('" . SELF . "?s=demo&c=home&m=set_length&id={cid}','确定要执行吗?', '" . SELF . "?s=demo&c=home&m=index')"

跳转页面是这个列表的首页,而不是当前页面,应该是第三个参数写当前页。。我不知道插件的Clink.php应该如何表达刷新当前页。


以上2点求答,感谢

回帖
  • 官方研发技术-胡老师
    #1楼    官方研发技术-胡老师
    2022-01-07 08:59:11
    Chrome 0
    mysql由selectsum子句,专门来做求和的,可以搜索想这方面的知识
  • zooxen
    #2楼    zooxen
    2022-01-07 09:06:03
    Edge 0
    官方研发技术-胡老师
    $row = \Phpcmf\Service::M()->db->query("SELECT SUM(length) AS lengths FROM dr_1_demo_form_son;");
    我也试过了,不知道这样写是不是不对。返回的lengths=NULL
  • 阿Rain
    #3楼    阿Rain
    2022-01-07 09:14:57
    Chrome 0
    SELECT SUM(length) AS lengths FROM dr_1_demo_form_son看着没问题,很标准,去phpmyadmin里面运行下看看结果
  • zooxen
    #4楼    zooxen
    2022-01-07 09:17:50
    Edge 0
    阿Rain PhpMyAdmin里面正常的,能获取到数据,所以套用数据库的query不知道为啥是null
  • zooxen
    #5楼    zooxen
    2022-01-07 15:06:33
    Edge 0
    总算解决了运行SQL问题
    ********此内容需要回复后才能看到********
    跳转问题后面再研究吧。
    满意答案
  • zooxen
    #6楼    zooxen
    2022-01-07 15:07:59
    Edge 0
    @zooxen:自己解决。。官方只让我百度,执行SQL的函数也不说一下。重点是,文档里没有,只能到Model文件里面爬楼