在某种模式下获取动态数组的动态值

时间:2019-02-14 16:30:27

标签: php laravel

我想获取 Audit 模型的数据,该模型在其 old_values new_values 列中是存储数组,但动态。当我在视图中执行shelljs.which时,想要显示这些列时会出现以下错误:

  

ErrorException(E_ERROR)htmlspecialchars()期望参数1为字符串,给定数组(视图:H:\ DAF \ resources \ views \ audit \ index.blade.php)

我已经搜索了几个博客,他们说如何使用静态数组而不是动态数组来执行类似的操作。

审核模型为foreach,称为Laravel's vendor

OwenIt\Auditing

控制器

class Audit extends Model implements \OwenIt\Auditing\Contracts\Audit
{
    use \OwenIt\Auditing\Audit;

    /**
     * {@inheritdoc}
     */
    protected $guarded = [];

    /**
     * {@inheritdoc}
     */
    protected $casts = [
        'old_values'   => 'json',
        'new_values'   => 'json',
        'auditable_id' => 'integer',
    ];
}

Vista

<?php

namespace App\Http\Controllers;

use OwenIt\Auditing\Models\Audit;

class EstaticasController extends Controller {
    public function audit() {
        $audit = Audit::orderBy( 'id', 'DESC' )->get();
        return view( 'audit.index', compact( 'audit' ) );
    }
}

表格图片

包含数据的数据库图像

1 个答案:

答案 0 :(得分:0)

我认为这是问题所在

// ...
// <td>{{ $item->auditable_type }}</td>
   <td>{{ $item->old_values }}</td>
   <td>{{ $item->new_values }}</td>
// <td>{{ $item->url }}</td>
// ...

这里的问题是,为了在屏幕上打印它们,前端希望该值是字符串,但是您给它一个数组。这就是引发错误的原因:

  

ErrorException(E_ERROR)htmlspecialchars()期望参数1为字符串,给定数组(视图:H:\ DAF \ resources \ views \ audit \ index.blade.php)

要解决此问题,您只需要遍历数组即可打印出它的每个元素:

@foreach ($item->old_values as $value)
    <p>{{ $value }}</p>
@endforeach