2016-03-04 75 views
1

我使用pivot从我的表中选择一些记录。这是查询:用Codeigniter检索查询结果

$data['master'] = $this->db->query("select * from 
     (
     select row, c.Nilai,b.Fullname,a.KodePenilaian,d.Description from penilaian_header a 
     left join employee b on a.Nip = b.Nip 
     left join outlet d on a.Outlet = d.OutletCode 
     left join (select ROW_NUMBER() OVER(PARTITION BY KodePenilaianH ORDER BY idPenilaiand DESC) AS Row, Nilai,KodePenilaianH from penilaian_Detail 
     ) c on a.KodePenilaian = c.KodePenilaianH where a.Outlet like '%$outlet%' and Periode like '%$periode%' 
     ) nilai 
     pivot 
     (
     sum(nilai) 
     for row in ([1],[2],[3],[4],[5]) 
     ) piv;")->result(); 

而这个结果时,我通过MS SQL管理工具运行

enter image description here

现在,我的问题是检索这些[1],[2],[3],[4],[5]值。当我这样做:

echo "<pre>";print_r($data['master']); 
die(); 

我只得到这样的:

Array 
(
    [0] => stdClass Object 
     (
      [Fullname] => maya kristiana 
      [KodePenilaian] => PE0000001 
      [Description] => KIOS ATRIUM3 
     ) 

    [1] => stdClass Object 
     (
      [Fullname] => SHELVIA GITA PUTRI 
      [KodePenilaian] => PE0000002 
      [Description] => KIOS ATRIUM3 
     ) 

) 

更新: 我找到了解决方案,这要归功于@Alex格子呢(见下面的接受的答案):

我只是将我的->result()更改为->result_array();

并且结果如现所需:

enter image description here

+0

有什么问题? –

+0

我的问题是检索[1],[2],[3],[4],[5]字段值 – Boby

+0

使用foreach($ data ['master']作为$ data){echo $ data}或$数据[ '主'] [0] - >全名; –

回答

2

你可能想的对象是 “怪异” 的,至少可以说使用

->result_array(); // instead of `->result();` 

数值属性。
再加上阅读它们的麻烦。你不得不echo $obj->{1}
此外,设置它们意味着相同的方法:$obj->{1} = 'stuff'

笨可能无法做到这一点。

获取它们作为阵列将绕过这个问题(希望)

+0

它正在工作,谢谢。 – Boby

+0

@Boby,很高兴帮助 –

0

该函数返回查询结果作为纯阵列,或当没有结果产生一个空数组。通常你会在foreach循环使用,像这样:

这将返回所有记录作为数组结果:

$query = $this->db->query("YOUR QUERY"); 

foreach ($query->result_array() as $row) 
{ 
echo $row['title']; 
echo $row['name']; 
echo $row['body']; 
} 

而且如果你需要得到单记录那么你可以使用这个:

$query = $this->db->query("YOUR QUERY"); 

if ($query->num_rows() > 0) 
{ 
    $row = $query->row(); 

    echo $row->title; 
    echo $row->name; 
    echo $row->body; 
} 

另请参阅this它会帮助你