par*_*oid 31 php laravel laravel-5 laravel-seeding laravel-5.2
我想在使用它时播种数据库
public function run()
{
$users = factory(app\User::class, 3)->create();
}
Run Code Online (Sandbox Code Playgroud)
在数据库中添加三个用户,但是当我使用它时
public function run()
{
$Comment= factory(app\Comment::class, 3)->create();
}
Run Code Online (Sandbox Code Playgroud)
告诉我错误
[InvalidArgumentException]
无法找到名称为[default] [app\Comment]的工厂.
Aye*_*Ope 97
use PHPUnit\Framework\TestCase;[错误:并引发此错误]
use Tests\TestCase; [正确的]
Dar*_*yev 38
如果没有帮助的PHPUnit。
对于那些谁坚持在测试同一个问题的读者,我发现我忘了补充parent::setUp()的setUp方法。
Moh*_*han 37
默认情况下,laravel安装在database/factories/ModelFactory.phpFile中附带此代码.
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
Run Code Online (Sandbox Code Playgroud)
因此,在使用工厂模型对种子数据库进行种子设定之前,需要先定义它.这只是使用Faker Library的一个实例,它用于生成假数据,用于播种数据库以执行测试.
确保您为评论模型添加了类似的模态工厂.
所以你的评论模型工厂将是这样的:
$factory->define(App\Comment::class, function (Faker\Generator $faker) {
return [
'comment' => $faker->sentence,
// Any other Fields in your Comments Model
];
});
Run Code Online (Sandbox Code Playgroud)
Agu*_*ndo 16
factory()->create()从运行命令时也会发生这种情况php artisan tinker.确保database/factories/ModelFactory.php在打开修补程序之前保存文件
我正在使用laravel 5.5而且这样做有点不同.你必须 在\ database\factories目录中创建CommentFactory.php并将其添加到里面,
$factory->define(App\Comment::class, function (Faker\Generator $faker) {
return [
'comment' => $faker->sentence,
// Any other Fields in your Comments Model
];
});
Run Code Online (Sandbox Code Playgroud)
并添加这个,
$Comment= factory(\App\Comment::class, 3)->create();
Run Code Online (Sandbox Code Playgroud)
代替
$Comment= factory(app\Comment::class, 3)->create();
Run Code Online (Sandbox Code Playgroud)
我只是想添加这个,因为我面临着更高版本的相同问题,这个线程帮助我解决了很多问题.
小智 7
1º步骤 - 确保CommentFactory使用的是Comment而不是Model.
use App\Comment
...
$factory->define(Comment::class, function (Faker $faker){
Run Code Online (Sandbox Code Playgroud)
2º步骤 - 验证CommentsTableSeeder中的名称是否正确.
use App\Comment
...
public function run()
{
factory(Comment::class, 3)->create();
}
Run Code Online (Sandbox Code Playgroud)
祝好运!
小智 5
就我而言,错误是我导入了错误的测试基类。我没有扩展 Laravel 的 Tests\TestCase,而是从 PHPUnit 导入了 TestCase 类。愚蠢,但我花了很长时间才弄清楚这一点。
| 归档时间: |
|
| 查看次数: |
36130 次 |
| 最近记录: |