Codeigniter:将数据库中的多个列显示为一个

时间:2017-02-23 12:09:23

标签: php codeigniter

我想从我的数据库中显示多个列值。

使用模型中的查询

$this->db->select('*');
$this->db->from('projectskillslist ps');
$this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$this->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$this->db->where('ps.projectID = 1');

$query = $this->db->get();
$result = $query->result_array();
if ($query->num_rows() > 0) {
   return $result;
}
   return false;

在我的控制器中

$data['pSkills'] = $this->emp_model->view_projskills();

查询按预期完美返回:

enter image description here

现在在我看来,

我想打电话

Title: Project 1
SkillName: JAVA, PHP

到目前为止,我已经这样做了:

    foreach ($pSkills as $data) {
       echo $data['title'];
       echo $data['skillName'];
    }

我得到的结果是

 Title: Project 1
    Skills: PHP
 Title: Project 2
    Skills: JAVA

这确实是一个愚蠢的问题,我已经抬起头来寻找同样的问题,但我仍然没有运气。我希望你能帮助我。非常感谢你!!

2 个答案:

答案 0 :(得分:1)

试试这个,但首先按项目ID和技能ID订购结果集。

'connections' => [

'Register-low' => [
    'driver'        =>  'database',
    'table'         =>  'tbljobs',
    'queue'         =>  'low',
    'retry_after'   =>  5,
],
'Register-high' => [
    'driver'        =>  'database',
    'table'         =>  'tbljobs',
    'queue'         =>  'high',
    'retry_after'   =>  5,
],

'ForgotPassword' => [
    'driver'        =>  'database',
    'table'         =>  'tbljobs',
    'queue'         =>  'low',
    'retry_after'   =>  5,
],

],

视图

$this->db->order_by('projectID, skillID');

答案 1 :(得分:0)

如果有帮助,请按照以下步骤进行..

步骤1:您必须连接GROUP_CONCAT将帮助的projectID。

步骤2.执行如下所示的SQL查询

SELECT projectID, skillName, GROUP_CONCAT(projectID) AS projid FROM projectskillslist GROUP BY projid 第3步:要在视图中显示它,你可以使用PHP的explode()并对其进行迭代,如果有帮助的话,就像这样..

    foreach ($pSkills as $row) {
    echo $row->title;
    echo explode(',', $row->skillName);
    /*
        or add below line of code  if it doesn't works

    */ 
     //echo str_replace(',', '<br />', $row->skillName);
}