【问题标题】:Create a dynamic table in laravel blade在 laravel Blade 中创建动态表
【发布时间】:2018-02-05 11:28:17
【问题描述】:

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

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

$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) 错误异常

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

【问题讨论】:

  • 试试:return view('framework/list')-&gt;with('data' =&gt; $data)-&gt;with('coloumns' =&gt; $coloumns);
  • 分享$data$coloumns的一个元素?
  • @Troyer 同样的问题
  • @user2486 不,我想将两个对象都传递给查看,并且应该创建对象 和 。
  • 我与我们分享,将输出粘贴到您的问题中?

标签: php mysql laravel


【解决方案1】:

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

这种“用大括号括起来”的技巧在 PHP 中非常有用 由于变量变量的歧义。

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

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签