Voici mon code:
['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'],
J'ai ajouté deux nouveaux types de champs et icône et quand j'exécute des seeders, il dit:
In privilegesTableSeeder Undefined index: icon
Je ne sais pas où est le problème:
Voici mon tableau:
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();
Pouvez-vous résoudre ce problème? Merci d'avance
3 Réponses :
Le premier élément du tableau n'a pas de clé icon
à accéder. Si la ligne de la table de la base de données d'icônes peut être Nullable et que vous ne souhaitez pas définir d'icône, définissez la clé mais définissez une valeur NULL comme:
'icon' => null
Cela se produit parce qu'il n'y a pas d'icône d'appel d'élément
dans le premier tableau, donc si vous devez définir la valeur par défaut pour les éléments non requis comme ci-dessous
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();
Créer le modèle:
<?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); } } }
Dans le modèle:
<?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']; }
Dans le semoir:
php artisan make:model PrevDefinition