php - 在 laravel blade 中创建一个动态表

标签 php mysql laravel

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

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

$data = User::all();

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

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

之后 $data 和 $columns通过以下语句发送到 View :

return view('framework/list', compact('data', 'columns'));

在我看来,即 list.blade.php 两个 foreach 循环用于创建 <tr><td>就像这样:

@foreach($data as $singleUser)
<tr>
    @foreach($columns as $cols)
    <td>

        {{$singleUser->$cols}}
        {{Blade::compileString('"'.'$singleUser->'."$cols".'"')}}
                                     
    </td>
    @endforeach
</tr>
@endforeach

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

(3/3) ErrorException

Trying to get property of non-object (View: /home/srmd/biniHR/resources/views/layouts/key.blade.php) (View: /home/srmd/resources/views/layouts/key.blade.php)

最佳答案

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

This "enclose with braces" trick is useful in PHP whenever there is ambiguity due to variable variables.

How do I dynamically write a PHP object property name?

您可以将用户对象转换为数组并对其进行迭代,而不是获取数据库值:

@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

关于php - 在 laravel blade 中创建一个动态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914841/

相关文章:

php - 更新数据库中与 html 表单中的复选框关联的列表的最佳实践

php - 您的 SQL 语法有错误;关于Mysql SQL注入(inject)

php - RedbeanPHP : Fatal error: function isFrozen() on a non-object in rb. PHP

mysql - 数据透视表 : getting data from one column

php - Lumen HTTP 基本认证

php - Laravel 播种机仅插入随机数的数据然后失败

php - 外部托管电子邮件并使用 PHP 发送电子邮件

mysql - 为什么我的 SQL 查询不起作用?

php - 如何在mysql中按季度对日期进行分组并在php中检索

php - 在 Laravel Eloquent 中使用子查询将过滤关系的计数列添加到选择中