我无法在Laravel Tinker中创建模型工厂。
//ItemFactory.php
class ItemFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Item::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name,
'slug' => $this->faker->slug(5, true),
'code' => $this->faker->words(5, true),
'description' => $this->faker->sentence,
'price' => $this->faker->randomNumber(1000, 10000),
'size' => $this->faker->randomElement(['Small', 'Medium', 'Large',]),
];
}
}
内部修补匠
>>> factory(App\Item::class)->create();
它抛出一个错误:
PHP致命错误:在第1行的Psy Shell代码中调用未定义的函数factory()
5条答案
按热度按时间w9apscun1#
在Laravel 8.x release notes中:
Eloquent模型工厂已经完全重写为基于类的工厂,并改进为具有一流的关系支持。
全局
factory()
函数从Laravel 8起被删除。相反,您现在应该使用模型工厂类。1.创建工厂:
1.确保在模型中导入了
Illuminate\Database\Eloquent\Factories\HasFactory
trait:1.这样使用:
使用
create
方法将它们持久化到数据库:话虽如此,如果你仍然想在Laravel 8.x中提供对上一代模型工厂的支持,你可以使用laravel/legacy-factories包。
vvppvyoh2#
看过Model Factory的文档后,Laravel 8版本有重大变化。
在Laravel 8中使用Model Factory:
1.在Model内部,我们需要导入
Illuminate\Database\Eloquent\Factories\HasFactory
trait1.实现工厂的新命令
cnh2zyt33#
在laravel 8中,默认的route命名空间被删除了。
尝试更改命令
到
nqwrtyyt4#
在Laravel 8中,我不能让工厂方法直接调用它,但我可以像在Item类上调用静态方法一样让它工作:
终端:
String(); String();
50few1ms5#
在laravel 10
1.确保在您的模型中导入 Illuminate\Database\Eloquent\Factories\HasFactory,您的模型应如下所示
创建工厂
php artisan make:factory ItemFactory --model=Item
在打开的修补程序中定义工厂
php artisan tinker
然后
use App\Models\model-name(ie Item)Item::factory()->create()
要插入4条记录,也许您可以指定工厂参数
item::factory(4)->create()