I'm facing an issue on laravel 8, I created :
- A class called
CRUDModelthat extendsIlluminate\Database\Eloquent\Model - A Model called
Stuffthat extendsCRUDModel - A factory called
StuffFactory
When I call Stuff::factory()->count(60)->create(); I get this error :
SQLSTATE[HY000]: General error: 1364 Field 'title' doesn't have a default value (SQL: insert into `stuffs` (`updated_at`, `created_at`) values (2020-10-12 15:28:06, 2020-10-12 15:28:06))
I guess it's because of Stuff doesn't extend directly Model but I'm not sure.
Here's my class :
<?php
namespace App\Crudite\Model;
use Illuminate\Database\Eloquent\Model;
use App\Crudite\Model\CRUDIntel;
class CRUDModel extends Model
{
use CRUDIntel;
...
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Crudite\Model\CRUDModel;
class Stuff extends CRUDModel
{
use HasFactory;
...
}
<?php
namespace Database\Factories;
use App\Models\Stuff;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Factories\Factory;
class StuffFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Stuff::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
"title" => $this->faker->name,
"content" => $this->faker->paragraph,
"thumbnail" => "https://placekitten.com/1200/300"
];
}
}