php - laravel 播种机给出错误并且不会播种
问题描述
我一直试图让我的播种机工作,但它一直给我以下错误
Call to undefined function Database\Seeders\factory()
at database/seeders/ContactTableSeeder.php:16
12▕ * @return void
13▕ */
14▕ public function run()
15▕ {
➜ 16▕ factory('App\Models\Contact', 100)->create()
17▕ ->each(function($contact) {
18▕ $contact->addresses()->save(
19▕ (factory(App\Address::class)->make())
20▕ );
+24 vendor frames
25 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
我的数据库播种机
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
//Model::unguard(); // Disable mass assignment
$this->call(ContactTableSeeder::class);
//Model::reguard();
}
}
我的联系人TableSeeder
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class ContactTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory('App\Models\Contact', 100)->create()
->each(function($contact) {
$contact->addresses()->save(
(factory(App\Address::class)->make())
);
});
}
}
我的联系工厂
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Models\Contact;
use Faker\Generator as Faker;
$factory->define(Contact::class, function (Faker $faker) {
return [
'firstName' => $faker->firstName,
'lastName' => $faker->lastName,
'email' => $faker->unique()->email,
'phone' => $faker->phoneNumber,
'birthday' => $faker->date($format = 'Y-m-d', $max = 'now')
];
});
我的地址工厂
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Models\Address;
use Faker\Generator as Faker;
$factory->define(Address::class, function (Faker $faker) {
return [
'number' => $faker->number,
'street' => $faker->streetName,
'city' => $faker->city,
'state' => $faker->state,
'zip' => $faker->postcode,
'type' => 'home',
'contact_id'=> factory(App\Models\Contact::class),
];
});
联系方式
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
use HasFactory;
protected $fillable = [ 'firstName', 'lastName', 'email', 'phone', 'birthday' ];
public function addresses()
{
return $this->hasMany('App\Models\Address');
}
}
我的地址模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Address extends Model
{
use HasFactory;
protected $fillable = [ 'id', 'number', 'street', 'city', 'state', 'zip', 'type', 'contact_id' ];
public function contacts()
{
return $this->belongsTo('App\Models\Contact');
}
}
我试过运行 composer dump-auto composer update
这些正常的修复似乎都不起作用。
我真的不知道为什么它会失败提前感谢您的帮助
解决方案
替换您的工厂功能factory('App\Models\Contact', 100)->create()
使用此代码:
\App\Models\Contact::factory()->count(100)
->create();
为什么?因为在 laravel 8 中删除了默认路由命名空间
推荐阅读
- reactjs - 我想在 react js 中打开带有一些数据的新标签点击事件。现在正在使用 history.push 但它正在同一个标签中打开
- kotlin - Kotlin 委托如何从委托对象访问类属性
- go - Golang使用unicode关键字获取数据错误
- sql - 在 ClickHouse 中使用 Array(Tuple(LowCardinality(String), Int32))
- zeromq - ZeroMQ 是否为消息传递实现了总有序多播?
- electron - 使用保存对话框 electronjs 从服务器下载文件
- xcuitest - 在 XCUIElement 中使用正则表达式
- android - Android 取消来自后端的通知
- rust - 有没有办法设置 Clap 或其他 arg 库以接受普通的“-”或“+”,以便我可以获得没有命名标志的参数组?
- python - 如果现在时间在时间数组中,则 Python 执行任务