我是 Laravel 的新手,当我尝试使用工厂在数据库表中生成一些信息时出现错误。
\n\n\n在 \nvendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php:17 上调用 null " 上的成员函数 count()。
\n
也许有人遇到了同样的问题?如果有人可以提供帮助,我将不胜感激。以下是某些元素的代码:
\n播种机
\nclass UsersTableSeeder extends Seeder\n{\n public function run()\n {\n Users::factory()->count(30)->create();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n工厂
\nclass UploadInfoFactory extends Factory\n{\n protected $model = Users::class;\n\n public function definition()\n {\n return [\n 'Name' => $this->faker->name,\n 'Birthday' => $this->faker->date('d-m-Y'),\n 'Phone number' => $this->faker->phoneNumber,\n 'Phone balance' => $this->faker->numberBetween(-50,150),\n ];\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n数据库播种器
\nclass DatabaseSeeder extends Seeder\n{\n public function run()\n {\n $this->call(UsersTableSeeder::class);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n移民
\nclass CreateInfoUsers extends Migration\n{\n public function up()\n {\n Schema::create('info_users', function (Blueprint $table) {\n $table->integerIncrements('id');\n $table->string('name',100);\n $table->date('Birthday');\n $table->string('Phone number',100);\n $table->string('Phone balance',100);\n });\n }\n} \nRun Code Online (Sandbox Code Playgroud)\n当我们输入 php artisan db:seed 时,bash 中弹出的错误代码:
\nCall to a member function count() on null at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php:17\n 13\xe2\x96\x95 public static function factory(...$parameters): Factory {\n 14\xe2\x96\x95 $factory = static::newFactory() ?: Factory::factoryForModel(get_called_class());\n 15\xe2\x96\x95 \n 16\xe2\x96\x95 return $factory\n \xe2\x9e\x9c 17\xe2\x96\x95 ->count(is_numeric($parameters[0] ?? null) ? $parameters[0] : null)\n 18\xe2\x96\x95 ->state(is_array($parameters[0] ?? null) ? $parameters[0] : ($parameters[1] ?? []));\n 19\xe2\x96\x95 }\n 20\xe2\x96\x95 \n 21\xe2\x96\x95 /**\nRun Code Online (Sandbox Code Playgroud)\n
Gab*_*rra 12
这可能会帮助其他人,因为我的问题有所不同。在为数据库做种时,Laravel 打印出了 @Yurii 遇到的相同错误。
Seeding: Database\Seeders\ProfileSeeder
Error
Call to a member function count() on null
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php:18
Run Code Online (Sandbox Code Playgroud)
事实上,我的artisan控制台无法为我的配置文件模型创建工厂
Seeding: Database\Seeders\ProfileSeeder
Error
Call to a member function count() on null
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php:18
Run Code Online (Sandbox Code Playgroud)
经过几分钟的调查,我发现我忘记在configure方法中返回工厂
$ php artisan tinker
>>> use Illuminate\Database\Eloquent\Factories\Factory;
>>> Factory::factoryForModel(Profile::class);
=> null
Run Code Online (Sandbox Code Playgroud)
所以,当实例化Factory时,configure调用了该方法,但没有返回Factory!退货解决了这个问题。
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |