admin

使用连接(codeigniter)从单个字段中检索并打印逗号分隔符后的值

sql

我在使用codeigniter从mysql检索值时遇到一个问题。

我有一个表名称任务,并且其中有一个字段signedUserid。

表格-任务:

id  | title     | assigneduserid
-------------------------------------
1   | Workspace | 23,21

表-用户

id  | title 
-----------------
23  | Ashish
21  | Ritesh

在assigneduserid字段中,该字段中有两个值为23,21。

我想使用该assigneduserid从用户表中打印两个用户名: Ashish,Ritesh

我也想按 assigneduseid* 中的升序设置该值 *

我正在尝试使用回显在页面上打印该记录,如下所示

以下是我正在打印的代码:

<?php echo $task_row->usertitle;?>

上面的代码仅打印 Ashish

但我想印 Ashish,Ritesh

以下是我的模型。

function getTask($id, $is_master_admin) 
        {
         $this->db->select('workspace.title as workspacetitle, user.title as usertitle,task.*');
        $this->db->join(WORKSPACE, WORKSPACE . '.id = ' . TASK . '.workspaceid', 'inner');
        $this->db->join(USER, USER . '.id = ' . TASK . '.assigneduserid', 'inner');
        $this->db->from(TASK);
        if (!$is_master_admin) {
            $this->db->where(USER . '.id', $id);
        }
        $this->db->where(TASK . '.tasktypeid', '1');
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return false;
        }
    }

谢谢高级


阅读 157

收藏
2021-06-07

共1个答案

admin

用这个

function getTask($id, $is_master_admin)
{

$this->db->select('task.*, workspace.title as workspacetitle, GROUP_CONCAT( user.title ) AS usertitle,task.assigneduserid,user.id',FALSE);
$this->db->join(WORKSPACE , WORKSPACE . '.id = ' . TASK . '.workspaceid', 'inner');
$this->db->join(USER,("FIND_IN_SET(USER .id , TASK.assigneduserid)"), 'inner');
$this->db->from(TASK);
$this->db->group_by("task.id");
if (!$is_master_admin)
{

$this->db->where ("FIND_IN_SET($id, task.assigneduserid)");
}
$this->db->where(TASK . '.tasktypeid', '1');
$query = $this->db->get();

if ($query->num_rows() > 0) {
return $query->result();
} else {
return false;
}

}
2021-06-07