Laravel 4要查看的Std对象数组

时间:2015-08-16 03:55:30

标签: php laravel laravel-4

这是我在SO中的第一个问题,试图尽可能多地解释。

我正在使用mysql中的存储过程创建报告。我使用laravel4以下面的格式获取std对象数组。我可以让这个工作得很好

    Array
(
    [0] => stdClass Object
        (
            [date] => 2015-08-01
            [Tuition Fee] => 1000
            [Hostel] => 500
        )

    [1] => stdClass Object
        (
            [date] => 2015-10-01
            [Tuition Fee] => 1500
            [Hostel] => 
        )

)

我想将其转换为HTML表格。我可以使用foreach循环

来做到这一点
date       | Tuition Fee | Hostel
2015-08-01 | 1000        | 500
2015-10-01 | 1500        | 

视野中的代码:

    @foreach($x as $user) 
 {{ $user->date}}
{{ $user->Tuition Fee }}
@endforeach

然而,该表没有固定的列标题。根据报告,它可以是5列或7列。 eg-

dateToCharge | Tuition Fee | Miscalleneous Fee | Development Fee

请在这方面提供帮助,因为我在过去10天里一直在敲头。

1 个答案:

答案 0 :(得分:0)

为了动态生成列标题,您可以尝试执行以下操作:

  1. 首先,您需要将对象转换为arrays(在您的php代码中使用get_object_vars方法):

    $users = array();
    foreach($x as $user){
         $users[] = get_object_vars($user);
    }
    

    之后,您将使用以下数组格式包含先前的对象:

    [0] => array(3) { 
        ['date'] => '2015-08-01'
        ['Tuition Fee'] => 1000
        ['Hostel'] => 500
    }
    
  2. 将列提取成一个单独的数组(此处名为columns ):

    $columns = array();
       foreach($users as $user){
            foreach($user as $column => $value){
                $columns[] = $column;
       }
       break; //since we'd want to loop only once to get the column names
    }
    
  3. 在您的视图中,迭代columns数组和users数组以获取所需的结果表。

    <table>
      <thead>
        <tr>
            @foreach($columns as $column)
                <th>{{ $column }}</th>
            @endforeach
        </tr>
      </thead>
      <tbody>
        @foreach($users as $user)
            <tr>    
                @foreach($columns as $column)             
                     <td>{{ $user[$column] }}</td>
                @endforeach
            </tr>
        @endforeach
      </tbody>
    </table>