2017-01-26 17 views
0

データベースのテーブルにデータをシードしようとするとエラーが発生します。私は2つのテーブル:著者を持っています。テーブルはORMを使用してリレーションを持っています。しかし、私はLaravel 5.3シード化

PHPの職人の移行を使用して、それを実行しようとすると:

4桁は データが欠落見つかりませんでした:リフレッシュは、私はこのエラーを得た

を--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 

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'); 

} 
} 

シーダのための私のコード:

<?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]); 

} 
} 

そしてここでは、私のコード

マイモデル "著者" であります

と私の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']); //等。 –

答えて

0

使用すると、正しいフィールド名を使用して、正しいキーに置く必要があります:書籍テーブルのあなたの列がtitlenameであれば

$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

この回答が役に立った場合は、同じ問題を抱えている他の人を助けるために受け入れ済みとしてマークしてください。 –