Я знаю, что это какая-то ошибка дампа, но какое-то время не могу ее найти. У меня есть таблица Meals и table Ingredient с отношением многие ко многим. Хотите ввести фальшивые данные и создать таблицу ингридиента. Я публикую код ниже, но когда я go для db: seed --class = MealSeeder, я получаю эту ошибку
SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'title' не имеет значения по умолчанию (SQL: вставить в meals
(updated_at
, created_at
) значения (2020-05-29 16:26:55, 2020-05-29 16:26:55))
предполагая, что эта фабрика работает неправильно, но нигде не может найти решения, я мог бы передать эту проблему, поместив nullable () в миграцию и обновив свои данные, но это мне не кажется правильным. Заранее благодарим за помощь!
MealFactory. php
$factory->define(App\Meal::class, function (Faker $faker) {
return [
'title' => $faker->realText($maxNbChars = 10),
'description' => $faker->realText($maxNbChars = 20),
];
});
$factory->define(App\Ingredient::class, function (Faker $faker) {
static $id = 1;
return [
'title' => $faker->realText($faker->numberBetween(10,15)),
'slug' => $id++, //$faker->unique()->numberBetween(1,20),
];
});
Model Meal. php
protected $fillable = ['title','description'];
public function ingredients()
{
return $this->belongsToMany('App\Ingredient');
}
Model Ingredient. php
protected $fillable = ['title'];
public function meals()
{
return $this->belongsToMany('App\Meal');
}
Перенос питания
Schema::create('meals', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('description');
$table->string('status')->default('created');
$table->string('category')->nullable();
$table->timestamps();
//$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
});
MealSeeder. php
factory(App\Meal::class, 10)->create()->each(function ($meals) {
$meals->ingredients()->save(factory(App\Ingredient::class)->make());
});
factory(App\Ingredient::class, 10)->create()->each(function ($ingredients) {
$ingredients->meals()->save(factory(App\Meal::class)->make());
});
// Get all the ingredients attaching up to 3 random ingredient to each meal
$ingredients = App\Ingredient::all();
// Populate the pivot table
App\Meal::all()->each(function ($meal) use ($ingredients) {
$meal->ingredients()->attach(
$ingredients->random(rand(1, 3))->pluck('id')->toArray()
);
});
РЕДАКТИРОВАТЬ: Я двинулся дальше, не нашел правильного решения. Я установил в миграции значение nullable () для атрибутов title и description. Запустите сидер и заполните все пустые данные через DB :: update. Теперь это выглядит так некрасиво: (