Laravel: доступ к коллекционным значениям внутри шаблона лезвия - PullRequest
0 голосов
/ 31 октября 2018

Итак, я сделал так, как мне предложили, и заменил несколько запросов на один, чтобы повысить производительность. Проблема в том, что я получаю следующее сообщение об ошибке: " 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 голосов
/ 31 октября 2018

Если вы соберете коллекцию вот так

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

В итоге вы получите массив ['name' => 'value'] элементов

Таким образом, вы можете получить к нему доступ {{ $globals['appName'] }} по вашему мнению

Допустим, например, что вы вставите еще одну запись БД

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

Вы должны иметь доступ к этому свойству, используя только имя, например

{{ $globals['configName'] }}
0 голосов
/ 31 октября 2018

изменение

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

до

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

и

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

будет доступно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...