Laravel:在刀片模板内访问集合值

时间:2018-10-31 16:42:42

标签: javascript php laravel

所以我确实像建议我那样,用一个查询替换了多个查询以提高性能,问题是现在我收到以下消息错误: ”  ErrorException(E_NOTICE) 未定义的索引:appName“

首先我的迁移,以便您可以看到数据结构:

Schema::create('globals', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('displayName');
            $table->string('value')->nullable();
            $table->integer('intValue')->nullable()->default(0);
            $table->timestamps();
        });
        
        DB::table('globals')->insert([
            'name' => 'appName',
            'displayName' => 'Nombre de la aplicación',
            'value' => config('globals.appName'),
        ]);

这就是我收集全局变量的方式:

$globals = Globals::all()->pluck('name', 'value', 'intValue'); 
$view->with('globals', $globals);

我想按“名称”及其相应值访问刀片服务器模板中的数据,如下所示:

{{ $globals['appName']['value'] }}

这是我做完之后得到的:{{dd($ globals)}}

https://i.imgur.com/IK4IsX4.png

看来他们倒退了吗?我该如何解决?

2 个答案:

答案 0 :(得分:0)

更改

$globals = Globals::all()->pluck('name', 'value', 'intValue');

$globals = Globals::all()->keyBy('name')->toArray();

{{ $globals['appName']['value'] }}
{{ $globals['appName']['displayName'] }}
{{ $globals['appName']['intValue'] }}

将可用

答案 1 :(得分:0)

如果您选择这样的收藏

$globals = Globals::all()->pluck('value', 'name'); 

您最终将获得['name' => 'value']元素的数组

因此您可以在视图中像{{ $globals['appName'] }}一样访问它

例如,假设您将插入另一个数据库记录

DB::table('globals')->insert([
    'name' => 'configName',
    'displayName' => 'Something',
    'value' => 'config value',
]);

您应该能够在视图中使用仅一个名称的访问该属性

{{ $globals['configName'] }}