我在动态创建表时遇到问题。
基本上我是通过以下语句从数据库中获取数据:
$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)
答案 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