【发布时间】:2021-01-26 22:54:46
【问题描述】:
我在 laravel 8 上遇到了一个问题,我创建了:
- 一个名为
CRUDModel的类扩展Illuminate\Database\Eloquent\Model - 一个名为
Stuff的模型扩展了CRUDModel - 一个叫
StuffFactory的工厂
当我打电话给Stuff::factory()->count(60)->create(); 时,我收到了这个错误:
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))
我猜这是因为 Stuff 没有直接扩展 Model 但我不确定。
这是我的课:
<?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"
];
}
}
【问题讨论】:
标签: php laravel factory extends laravel-8