简体   繁体   English

Codeigniter活动记录查询数

[英]Codeigniter active record query count

in my project i have 4 tables. 在我的项目中,我有4张桌子。 One called Calls , Projects , Products and Users . 一种叫做CallsProjectsProductsUsers

Calls has 2 FK ( project_id and user_id ) and Projects has one FK ( product_id ). 呼叫有2个FK( project_iduser_id ),而Projects有一个FK( product_id )。

I'm trying to query the table Calls and I want to know the amount of calls for each product has been received from each operator. 我正在尝试查询表Calls ,我想知道已经从每个运营商处收到了每种产品的呼叫数量。

I'm trying to query something like this: 我正在尝试查询如下内容:

[{"name":"User1","Project1":"120","Project2":"10,"Project3":"140...}
{"name":"User2","Project1":"80","Project2":"60,"Project3":"14...}]

I am guessing when you mean operator you mean user 我猜你是什么意思

$this->db->select('count(P.product_id) as total_product ,CL.project_id, CL.user_id, P.project_name')
            ->from('Calls CL')
            ->join('Projects P', 'P.project_id=CL.project_id')
            ->group_by('CL.project_id, CL.user_id')
            ->get();

Now your can write a php script to loop through your result to make the json 现在,您可以编写一个php脚本循环遍历结果以制作json

    $index = 0;
    $user_data = array();
    $user_key = array();
    foreach ($result as $row) {
        if(!isset($user_key[$row['user_id']])){
            $user_key[$row['user_id']] = $index;
            $index++;
        }
        $user_data[$user_key[$row['user_id']]]['user_name'] = $row['user_name'];
        $user_data[$user_key[$row['user_id']]][$row['project_name']] = $row['total_product'];
    } 

I did not tested the code but it should work 我没有测试代码,但应该可以

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM