1 php database shopping-cart virtualbox laravel-livewire
我是 Laravel/Livewire/Jetstream 的新手,我正在尝试按照本[教程](https://lightit.io/blog/laravel-livewire-shopping-cart-demo/)创建一个购物车项目。我在虚拟机中使用 Laravel 8/ OS Ubuntu。\n当我尝试运行此命令时,出现异常错误“未定义的变量:工厂”php artisan migrate:fresh --seed
错误内容
\nSeeding: Database\\Seeders\\ProductSeeder\n\n ErrorException \n\n Undefined variable: factory\n\n at database/factories/ProductFactory.php:7\n 3\xe2\x96\x95 /** @var \\Illuminate\\Database\\Eloquent\\Factory $factory */\n 4\xe2\x96\x95 use App\\Models\\Product;\n 5\xe2\x96\x95 use Faker\\Generator as Faker;\n 6\xe2\x96\x95 \n \xe2\x9e\x9c 7\xe2\x96\x95 $factory->define(Product::class, function (Faker $faker) {\n 8\xe2\x96\x95 return [\n 9\xe2\x96\x95 \'name\' => $faker->word,\n 10\xe2\x96\x95 \'description\' => $faker->text(180),\n 11\xe2\x96\x95 \'price\' => $faker->numberBetween(50, 100)\n\n 1 database/factories/ProductFactory.php:7\n Illuminate\\Foundation\\Bootstrap\\HandleExceptions::handleError()\n\n +2 vendor frames \n 4 [internal]:0\n Composer\\Autoload\\ClassLoader::loadClass()\n
Run Code Online (Sandbox Code Playgroud)\n作曲家.json 文件
\n "autoload": {\n "psr-4": {\n "App\\\\": "app/",\n "Database\\\\Factories\\\\": "database/factories/",\n "Database\\\\Seeders\\\\": "database/seeders/"\n }\n
Run Code Online (Sandbox Code Playgroud)\n数据库/迁移/xxxx_xx_xx_xxxxxx_create_products_table.php
\n<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateProductsTable extends Migration\n{\n /**\n * Run the migrations.\n *\n * @return void\n */\n public function up()\n {\n Schema::create(\'products\', function (Blueprint $table) {\n $table->id();\n\n $table->string(\'name\');\n $table->string(\'description\');\n $table->float(\'price\');\n \n $table->timestamps();\n });\n }\n\n /**\n * Reverse the migrations.\n *\n * @return void\n */\n public function down()\n {\n Schema::dropIfExists(\'products\');\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n数据库/工厂/ProductFactory.php
\n <?php\n\n/** @var \\Illuminate\\Database\\Eloquent\\Factory $factory */\nuse App\\Models\\Product;\nuse Faker\\Generator as Faker;\n\n$factory->define(Product::class, function (Faker $faker) {\n return [\n \'name\' => $faker->word,\n \'description\' => $faker->text(180),\n \'price\' => $faker->numberBetween(50, 100)\n ];\n});\n
Run Code Online (Sandbox Code Playgroud)\n数据库/seeders/ProductSeeder.php
\n <?php\nnamespace Database\\Seeders;\n\nuse App\\Models\\Product;\nuse Illuminate\\Database\\Seeder;\n\nclass ProductSeeder extends Seeder\n{\n /**\n * Run the database seeds.\n *\n * @return void\n */\n public function run()\n {\n \\App\\Models\\Product::factory()->count(50)->create();\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n数据库/seeders/DatabaseSeeder.php
\n <?php\n\nuse Database\\Seeders\\ProductSeeder;\nuse Illuminate\\Database\\Seeder;\n\n\nclass DatabaseSeeder extends Seeder\n\'{\n /**\n * Seed the application\'s database.\n *\n * @return void\n */\n public function run()\n {\n $this->call(ProductSeeder::class);\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n你能帮助我理解我做错了什么吗?
\n谢谢
\nDig*_*jay 10
您ProductFactory::class
似乎遵循 Laravel 7 约定。Laravel 8 模型工厂功能已完全重写以支持类,并且与 Laravel 7.x 样式工厂不兼容。
您可以执行以下操作:
<?php
namespace Database\Factories;
use App\Models\Product;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ProductFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Product::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name,
'description' => $this->faker->realText(180),
'price' => $this->faker->numberBetween(50, 100)
];
}
}
Run Code Online (Sandbox Code Playgroud)
Product Model
此外,您还需要更新:
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Product extends Model
{
use HasFactory;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6040 次 |
最近记录: |