0

我只是阻止如何在 CodeIgniter 中使用我的 sql 请求创建我的 group_concat。我所有的查询都列在一个表中,使用 Jtable 库。

一切正常,除非我尝试插入 GROUP_CONCAT。

这是我的模型页面:

function list_all()
    {
        $login_id = $this->session->userdata('User_id');
        $this->db->select('p.project_id, p.Project, p.Description, p.Status, p.Thumbnail, t.Template');
        $this->db->from('assigned_projects_ppeople a');
        $this->db->where('people_id', $login_id);
        $this->db->join('projects p', 'p.project_id = a.project_id');
        $this->db->join('project_templates t', 't.template_id = p.template_id');
        $this->db->select('GROUP_CONCAT(u.Asset SEPARATOR ",") as assetslist', FALSE);
        $this->db->from('assigned_assets_pproject b');
        $this->db->join('assets u', 'u.asset_id = b.asset_id');
        $query = $this->db->get();

        $rows = $query->result_array();

        //Return result to jTable
        $jTableResult = array();
        $jTableResult['Result'] = "OK";
        $jTableResult['Records'] = $rows;
        return $jTableResult;
    }

我的控制器页面:

function listRecord(){
        $this->load->model('project_model');
        $result = $this->project_model->list_all();
        print json_encode($result);
    }

并完成我的查看页面:

<table id="listtable"></table>
        <script type="text/javascript">
            $(document).ready(function () {
            $('#listtable').jtable({
                title: 'Table test',
                actions: {
                    listAction: '<?php echo base_url().'project/listRecord';?>',
                    createAction: '/GettingStarted/CreatePerson',
                    updateAction: '/GettingStarted/UpdatePerson',
                    deleteAction: '/GettingStarted/DeletePerson'
                },
                fields: {
                    project_id: {
                        key: true,
                        list: false
                    },
                    Project: {
                        title: 'Project Name'
                    },
                    Description: {
                        title: 'Description'
                    },
                    Status: {
                        title: 'Status',
                        width: '20px'
                    },
                    Thumbnail: {
                        title: 'Thumbnail',
                        display: function (data) {
                            return '<a href="<?php echo base_url('project');?>/' + data.record.project_id + '"><img class="thumbnail" width="50px" height="50px" src="' + data.record.Thumbnail + '" alt="' + data.record.Thumbnail + '" ></a>';
                        }
                    },
                    Template: {
                        title: 'Template'
                    },
                    Asset: {
                        title: 'Assets'
                    },
                    RecordDate: {
                        title: 'Record date',
                        type: 'date',
                        create: false,
                        edit: false
                    }
                }
            });
            //Load person list from server
            $('#listtable').jtable('load');
        });
        </script>

我读了很多关于这个的帖子,比如用“,”替换','分隔符,或者使用OUTER来加入,或者在使用get方法之前使用group_by('p.project_id'),不工作。

这是 json 中查询的输出:

{"Result":"OK","Records":[{"project_id":"1","Project":"Adam & Eve : A Famous Story","Description":"The story about Adam & Eve reviewed in 3D Animation movie !","Status":"wip","Thumbnail":"http:\/\/localhost\/assets\/images\/thumb\/projectAdamAndEve.png","Template":"Animation Movie","assetslist":"Apple, Adam, Eve, Garden of Eden"}]} 

我们可以看到 GROUP_CONCAT 在这里(在“assetslist”之后),但该列仍然是空的。

如果被问到,我可以发布数据库 SQL 文件。

4

2 回答 2

2

你能试试这个(编辑):

$this->db->select('GROUP_CONCAT(u.Asset) AS assetslist');

于 2013-11-09T04:22:43.613 回答
0

如此简单,在我的眼皮底下,但我没有看到... GROUP_CONCAT 为新的对应列使用别名(如“assetslist”)。我必须使用这个名称,而不是 Jtable 配置中我的非连接表列“资产”的默认名称:

<table id="listtable"></table>
        <script type="text/javascript">
            $(document).ready(function () {
            $('#listtable').jtable({
                title: 'Table test',
                actions: {
                    listAction: '<?php echo base_url().'project/listRecord';?>',
                    createAction: '/GettingStarted/CreatePerson',
                    updateAction: '/GettingStarted/UpdatePerson',
                    deleteAction: '/GettingStarted/DeletePerson'
                },
                fields: {
                    project_id: {
                        key: true,
                        list: false
                    },
                    Project: {
                        title: 'Project Name'
                    },
                    Description: {
                        title: 'Description'
                    },
                    Status: {
                        title: 'Status',
                        width: '20px'
                    },
                    Thumbnail: {
                        title: 'Thumbnail',
                        display: function (data) {
                            return '<a href="<?php echo base_url('project');?>/' + data.record.project_id + '"><img class="thumbnail" width="50px" height="50px" src="' + data.record.Thumbnail + '" alt="' + data.record.Thumbnail + '" ></a>';
                        }
                    },
                    Template: {
                        title: 'Template'
                    },
                    assetslist: {
                        title: 'Assets'
                    },
                    RecordDate: {
                        title: 'Record date',
                        type: 'date',
                        create: false,
                        edit: false
                    }
                }
            });
            //Load person list from server
            $('#listtable').jtable('load');
        });
        </script>

谢谢你 !

于 2013-11-09T21:50:10.707 回答