在laravel刀片中创建一个动态表

时间:2017-08-28 08:33:33

标签: php mysql laravel

我在动态创建表时遇到问题。

基本上我是通过以下语句从数据库中获取数据:

$columns = DB::getSchemaBuilder()->getColumnListing('users');  

之后我通过以下语句获取了数据库表的属性名称:

$columns

之后,$ data和return view('framework/list', compact('data', 'columns')); 通过以下语句发送到View:

<tr>

在我看来,即list.blade.php,两个foreach循环用于创建<td>@foreach($data as $singleUser) <tr> @foreach($columns as $cols) <td> {{$singleUser->$cols}} {{Blade::compileString('"'.'$singleUser->'."$cols".'"')}} </td> @endforeach </tr> @endforeach ,如下所示:

z-index: 999;

但我得到一个异常,而不是打印值(两个语句用于打印值,但两者都给出相同的异常)

  

(3/3)ErrorException

     

尝试获取非对象的属性(查看:/home/srmd/biniHR/resources/views/layouts/key.blade.php)(查看:/home/srmd/resources/views/layouts/key.blade .PHP)

1 个答案:

答案 0 :(得分:2)

对于动态调用,您必须使用:{{$singleUser->{$cols}}}

  

这种“括号括号”技巧在PHP中很有用   由变量变量引起的歧义。

How do I dynamically write a PHP object property name?

您可以将userobject转换为数组并迭代它,而不是获取数据库值:

@foreach($data as $singleUser)
<tr>
    @foreach($singleUser->toArray() as $key => $value)
    <td>
        Key {{ $key }}
        Value {{ $value }}
        Value {{ $singleUser->toArray()[$key] }} //equal to first try
        Value {{ $singleUser->{$key} }} // not sure if it works, but it should
    </td>
    @endforeach
</tr>
@endforeach