Неопределенный индекс: ошибка значка при работе сеялки laravel - PullRequest
1 голос
/ 20 мая 2019

Это мой код:

DB::beginTransaction();
    for($i = 0; $i < count($privileges); $i++) {
        DB::table('prev_definition')->insert([
            'priv_title' => $privileges[$i]['priv_title'],
            'priv_key' => $privileges[$i]['priv_key'],
            'display_group' => $privileges[$i]['display_group'],
            'parent_id' => $privileges[$i]['parent_id'],
            'type' => $privileges[$i]['type'],
            'icon' => $privileges[$i]['icon'], // here is error
        ]);
    }
DB::commit();

Я добавил два новых типа поля и значок, и когда я запускаю сеялки, он говорит:

In privilegesTableSeeder
Undefined index: icon

Я не знаю, где проблема:

Это мой массив:

['priv_title' => 'Basic Contact','priv_key' => 'can_access_patient_basic_contact', 'display_group' => 'patient_basic_contact','parent_id' => 7,'type' => 'menu'],
['priv_title' => 'Create Task','priv_key' => 'patient_basic_contact_can_add_task', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'create_task','icon' => 'create_task'],
['priv_title' => 'View','priv_key' => 'patient_basic_contact_can_view', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'view','icon' => 'view'],
['priv_title' => 'Edit','priv_key' => 'patient_basic_contact_can_edit', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'edit','icon' => 'edit'],
['priv_title' => 'Delete','priv_key' => 'patient_basic_contact_can_delete', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'delete','icon' => 'delete'],

Можете ли вы, ребята, решить эту проблему?Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Это происходит потому, что в первом массиве нет вызова элемента icon, поэтому, если вам нужно установить значение по умолчанию для необязательных элементов, как показано ниже

DB::beginTransaction();
    for($i = 0; $i < count($privileges); $i++) {
        DB::table('prev_definition')->insert([
            'priv_title' => $privileges[$i]['priv_title'],
            'priv_key' => $privileges[$i]['priv_key'],
            'display_group' => $privileges[$i]['display_group'],
            'parent_id' => $privileges[$i]['parent_id'],
            'type' => $privileges[$i]['type'],
            'icon' => isset($privileges[$i]['icon']) ? $privileges[$i]['icon'] ? null; //set the default as NULL or something else
        ]);
    }
DB::commit();
0 голосов
/ 21 мая 2019

Создать модель:

php artisan make:model PrevDefinition

В модели:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class PrevDefinition extends Model
{
    protected $table = 'prev_definition';

    public $timestamps = true;

    protected $fillable = ['priv_title', 'priv_key', 'display_group', 'parent_id', 'type', 'icon'];
}

В сеялке:

<?php

use Illuminate\Database\Seeder;
use App\PrevDefinition;

class privilegesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $privileges = [
            ['priv_title' => 'Basic Contact','priv_key' => 'can_access_patient_basic_contact', 'display_group' => 'patient_basic_contact','parent_id' => 7,'type' => 'menu'],
            ['priv_title' => 'Create Task','priv_key' => 'patient_basic_contact_can_add_task', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'create_task','icon' => 'create_task'],
            ['priv_title' => 'View','priv_key' => 'patient_basic_contact_can_view', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'view','icon' => 'view'],
            ['priv_title' => 'Edit','priv_key' => 'patient_basic_contact_can_edit', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'edit','icon' => 'edit'],
            ['priv_title' => 'Delete','priv_key' => 'patient_basic_contact_can_delete', 'display_group' => 'patient_basic_contact','parent_id' => 13,'type' => 'delete','icon' => 'delete'],
        ];

        foreach ($privileges as $data) {
            PrevDefinition::create($data);
        }
    }
}

0 голосов
/ 20 мая 2019

Первый элемент массива не имеет ключа icon для доступа.Если строка таблицы базы данных значков может быть обнуляемой, и вы не хотите устанавливать какие-либо значки, определите ключ, но установите нулевое значение, например: 'icon' => null

...