2017-01-26 4 views
0

데이터베이스의 테이블에 데이터를 시드하려고하면 오류가 발생합니다. 나는 2 테이블을 가지고 : 저자. 테이블은 ORM을 사용하여 관계를가집니다. 그러나, 내가하려고 할 때Laravel 5.3 시드 시드

PHP는 장인 마이그레이션을 사용하여 실행 : 새로 고침 --seed 나는이 오류가있어

: 네 자리가 데이터가 누락 찾을 수 없습니다

을 .

그리고 여기 내 코드입니다

내 모델 "저자"

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Author extends Model 
{ 
protected $fillable = ['name']; 

public function books(){ 
    return $this->hasMany('App\Book'); 
} 
} 

모델 "책"

<?php 

use Illuminate\Database\Seeder; 
use App\Author; 
use App\Book; 

class BooksSeeder extends Seeder 
{ 
/** 
* Run the database seeds. 
* 
* @return void 
*/ 
public function run() 
{ 
    $author1 = Author::create(['Muhammad Ariel Purnama']); 
    $author2 = Author::create(['Titania Eka Yuliandini']); 
    $author3 = Author::create(['Shikaku kookokokoko']); 

    $book1 = Book::create(['title' => 'goood boy', 'amount' => 3, 'author_id' => $author1->id]); 
    $book2 = Book::create(['title' => 'life observer', 'amount' => 4,'author_id' => $author2->id]); 
    $book3 = Book::create(['title' => 'Blekok Borokokko', 'amount' => 2, 'author_id' => $author3->id]); 

} 
} 
: 씨 뿌리는 사람에 대한

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Book extends Model 
{ 
protected $fillable = ['name','author_id','amount']; 

public function author(){ 

return $this->belongsTo('App\Author'); 

} 
} 

내 코드

및 내 DatabaseSeeder 코드 :

<?php 

use Illuminate\Database\Seeder; 

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

감사합니다.

+0

확실히 말할 수는 없지만 작성자를 만들 때 배열에 키가 누락되었습니다. '$ author1 = Author :: create ([ 'name'=> 'Muhammad Ariel Purnama']); // etc.' –

답변

0

사용은 정확한 필드 이름을 사용하고 올바른 키 놓아야합니다 : 책 테이블의 당신의 열이 title 또는 name 경우

$author1 = Author::create(['name'=>'Muhammad Ariel Purnama']); //use name key 
$author2 = Author::create(['name'=>'Titania Eka Yuliandini']); //use name key 
$author3 = Author::create(['name'=>'Shikaku kookokokoko']); //use name key 

$book1 = Book::create(['name' => 'goood boy', 'amount' => 3, 'author_id' => $author1->id]); //replace title for name 
$book2 = Book::create(['name' => 'life observer', 'amount' => 4,'author_id' => $author2->id]); //replace title for name 
$book3 = Book::create(['name' => 'Blekok Borokokko', 'amount' => 2, 'author_id' => $author3->id]); //replace title for name 

더블 체크를 한 다음 모델과 씨에 조정을한다.

+0

고마워요. 나는 laravel에서 새롭다. –

+0

이 답변이 유용 할 경우, 같은 문제를 가진 다른 사람들을 돕기 위해 받아 들인 것으로 표시하십시오. –

관련 문제