【问题标题】:Laravel 5.3 SeedingLaravel 5.3 播种
【发布时间】:2017-06-12 01:14:35
【问题描述】:

当我尝试将数据播种到数据库中的表时出现错误。我有 2 个表:authorbooks。该表具有使用 ORM 的关系。但是,当我尝试使用

执行它时

php artisan migrate:refresh --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);
}
}

感谢您的关注。

【问题讨论】:

  • 我不能肯定地说这是问题所在,但是当您创建作者时,您会丢失数组中的键。 $author1 = Author::create(['name' =&gt; 'Muhammad Ariel Purnama']); // etc.

标签: php laravel-5.3


【解决方案1】:

使用时应使用正确的字段名,并输入正确的键:

$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

仔细检查您的Books表的列是title还是name,然后在您的模型和种子中进行调整。

【讨论】:

  • 谢谢先生。我是 laravel 的新手。
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2014-09-05
  • 2015-04-13
  • 2016-05-28
  • 2016-10-09
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多