2017-11-06 2 views
0

일부 데이터를 mySql 데이터베이스로 가져 오려고합니다. 첫 번째 줄은 추가되지만 다른 줄은 추가되지 않습니다. 기본적으로 루프하지 않습니다 그래서이 없다는 오류를 보여줍니다PHP 장인 루핑 배열 오류

[Illuminate\Database\QueryException] SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry xxxxx

<?php 
use Illuminate\Database\Seeder; 
use Illuminate\Support\Facades\Artisan; 
use Illuminate\Support\Facades\DB; 

class DatabaseSeeder extends Seeder 
{ 
/** 
* Run the database seeds. 
* 
* @return void 
*/ 
public function run() 
{ 
    $this->call(xSeeder::class); 
    $this->call(xxSeeder::class); 

    Artisan::call('cache:clear', []); 
} 
} 

그것은 아래에 표시되는 xSeeder와 "AA"를 실행 "는"데이터베이스에 업데이트됩니다. 그러나 "BB", "B"를 업데이트하지 않고 "AA", "a"를 다시 업데이트하려고합니다.

<?php 
use App\Role; 
use App\Permission; 
use Illuminate\Database\Seeder; 
class DepartmentSeeder extends Seeder 
{ 
/** 
* Run the database seeds. 
* 
* @return void 
*/ 
public function run() 
{ 

    /** @var Roles */ 
    $default_role_list = array(
          0 => array("display_name"=>"AA","name"=>"a"), 
          1 => array("display_name"=>"BB","name"=>"b"), 
          2 => array("display_name"=>"CC","name"=>"c"), 
          ); 
    $default_role_list_count =0; 
    foreach ($default_role_list as $role) { 
     Role::create(array(
      'name'   => $role[$default_role_list_count]['name'], 
      'display_name' => $role[$default_role_list_count]['display_name'], 
     )); 
     $default_role_list_count++; 
    } 

} 
}?> 

이 오류가 표시됩니다 :

[ErrorException] Undefined offset: 0

+0

을 사용할 수있는'unique'이

<?php use App\Role; use App\Permission; use Illuminate\Database\Seeder; class DepartmentSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { /** @var Roles */ $default_role_list = [ ['display_name' => 'AA', 'name' => 'a'], ['display_name' => 'BB', 'name' => 'b'], ['display_name' => 'CC', 'name' => 'c'], ]; foreach ($default_role_list as $role) { Role::create([ 'name' => $role['name'], 'display_name' => $role['display_name'], ]); } } } 

나는 또 다른 코드를 시도 열에 대한 제약 조건. 역할의 존재를 확인해보십시오. 존재한다면'update'는'create'를 수행합니다. – Neverever

답변

0

당신이 코드

<?php 
    use App\Role; 
    use App\Permission; 
    use Illuminate\Database\Seeder; 
    class DepartmentSeeder extends Seeder 
    { 
     /** 
     * Run the database seeds. 
     * 
     * @return void 
     */ 
     public function run() 
     { 

      /** @var Roles */ 
      $default_role_list = array(
       array("display_name"=>"AA","name"=>"a"), 
       array("display_name"=>"BB","name"=>"b"), 
       array("display_name"=>"CC","name"=>"c"), 
      ); 
      foreach ($default_role_list as $role) { 
       Role::create($role); 
      } 

     } 
    } 
?> 
당신은있을 수 있습니다
+0

고맙습니다. 이제 건너 뜁니다. 그것은 다음 씨 뿌리 자로 옮깁니다 –

+0

죄송합니다. 나는 당신의 모든 질문을 읽었습니다. 이미 답변을 업데이트합니다. –