2016-12-20 11 views
0

Laravel의 Lumen 프레임 워크를 사용하여 백엔드 개발을 배우고 있으며 Laravel's documentation 다음에 데이터베이스 시드 클래스를 작성 중입니다. 아래 코드는 다음과 같습니다루멘 데이터베이스 시드 오류

모델 app\Photo.php

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Photo extends Model 
{ 
    protected $fillable = [ 
     'link', 'category_id', 'date' 
    ]; 
} 

모델 공장 database\factories\ModelFactory.php

$factory->define(App\Photo::class, function (Faker\Generator $faker) { 
    return [ 
     'link' => 'https://placehold.it/' . mt_rand(200, 400), 
     'category_id' => rand(1, 6), 
     'date' => date("Y-m-d", mt_rand(1263618000, 1481428800)) 
    ]; 
}); 

DatabaseSeederPhotoTableSeeder 클래스 이전

use Illuminate\Database\Seeder; 

class DatabaseSeeder extends Seeder 
{ 
    public function run() 
    { 
     $this->call('PhotoTableSeeder'); 
    } 
} 

class PhotoTableSeeder extends Seeder 
{ 
    public function run() 
    { 
     factory(App\Photo::class, 10)->create(); 
    } 
} 

database\seeds\DatabaseSeeder.php MySQL 데이터베이스에서 테이블 이름 photos이고 시드 명령 php artisan db:seed 사용하여 완벽하게 작동합니다 :

시드 : PhotoTableSeeder

을하지만 photo에 테이블 이름을 변경하고 같은 명령을 실행할 때, 이러한 오류가 발생했습니다 :

[Illuminate \ Database \ QueryException] SQLSTATE [42S02] : 기본 테이블 또는 뷰를 찾을 수 없음 : 1146 'homestead.photos'테이블이 존재하지 않습니다 (SQL :`photos` (`link`,`category_id`, 날짜 ') 값 (,, 3, 2012-05-28))는

[PDOException] SQLSTATE [42S02] 기본 테이블 또는 발견되지 전망 : 1,146 표 'homestead.photos는'

I가 존재하지 않는 돈 왜 오래된 테이블 이름이 여전히 호출되는지 알지 못합니다. 나는 그것이 어딘가에 저장되었거나 나는 뭔가를 놓친 것 같아, 나는 오류의 원인을 알아낼 수 없다.

+0

그래서 지금까지 코드에서 [migrations'] (https : // lumen.laravel.com/docs/5.3/database#migrations)보기 .. 글쎄, 좀더 자세히 설명하기 위해, 테이블을 생성하는 데 사용되는 마이그레이션, 테이블에서 한 행을 나타내는 데 사용되는 모델, 시드를 작성하는 팩토리, 시드 , seed를 데이터베이스에 삽입하십시오. –

+1

또한 laravel은 항상 테이블 이름이 모델의 복수 이름이라고 가정합니다. 사진과 같은 사진 .. '보호 된 $ 테이블'로 무시할 수 있습니다. –

+0

'DB :: table ('photo')'을 사용하여 지정된 테이블을 선택하십시오. – solarhell

답변

1

Eloquent는 모델 클래스 이름의 복수형을 데이터베이스의 테이블로 찾습니다. 이 경우에는 사진 모델 클래스에

protected $table = 'photo'; 

을 추가하여 어떤 이유로 테이블 사진의 이름을 지정해야하는 경우 "사진"

당신은 항상 기본을 무시할 수 있습니다라는 테이블을 찾기 위해 기다리고 있었다 그래서 . 나는 심지어 어떤 모델이 참조하는 테이블과 정확히 일치하는 기본 규약을 사용하는 경우에도 이것을 수행하는 경향이있다.