Laravel,调用未定义函数 Database\Seeders\factory()
Laravel, Call to undefined function Database\Seeders\factory()
我在执行 运行 命令时出现标题错误:
php artisan db:seed
我的截图:
我不知道这个问题是从哪里来的。我正在搜索代码示例和解决方案,但我没有找到任何东西:(
ArticlesTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
// use Laracasts\TestDummy\Factory as TestDummy;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Models\Article::class, 30)->create();
}
}
ArticleFactory.php
<?php
namespace Database\Factories;
use App\Models\Model;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ModelFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = App\Models\Article::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $faker->text(50),
'body' => $faker->text(200)
];
}
}
DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(ArticlesTableSeeder::class);
}
}
提前感谢您的帮助!
尝试改变
factory(App\Models\Article::class, 30)->create();
至
App\Models\Article::factory()->count(30)->create();
在 laravel 8 中删除了默认路由命名空间。
尝试改变:
ArticlesTableSeeder.php:
factory(App\Models\Article::class, 30)->create();
至:
\App\Models\Article::factory()->count(30)->create();
ArticleFactory.php:
protected $model = App\Models\Article::class;
至:
protected $model = \App\Models\Article::class;
您可能需要更改:
'title' => $faker->text(50),
'body' => $faker->text(200)
至:
'title' => $this->faker->text(50),
'body' => $this->faker->text(200)
如果您使用的是 laravel 的版本 8,请查看升级指南。
“Laravel 的模型工厂功能已完全重写以支持 类 并且与 Laravel 7.x 样式工厂不兼容。但是,为了简化升级过程,一个新的已创建 laravel/legacy-factories 包以继续使用现有工厂 Laravel 8.x。您可以通过 Composer 安装此包:
作曲家要求 laravel/legacy-factories"
https://laravel.com/docs/8.x/upgrade#seeder-factory-namespaces
ArticlesTableSeeder.php
<?php
namespace Database\Seeders;
use App\Models\Article;
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Article::factory()->times(30)->create();
}
}
ArticleFactory.php
<?php
namespace Database\Factories;
use App\Models\Article;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ArticleFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Article::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->text(50),
'body' => $this->faker->text(200)
];
}
}
这里提到的所有建议都是正确的。
如果您使用 Laravel 8,有时 运行 composer require laravel/legacy-factories
可能会解决您的问题。
此外,如果您收到 Class 'Database\Factories\ArticleFactory' not found
的错误消息
然后确保您有 class ArticleFactory extends Factory
而不是 ModalFactory。
并确保您像此处一样在文章模型中使用 HasFactory。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use HasFactory;
}
改变
factory(App\Models\Article::class, 30)->create();
至
\App\Models\Article::factory(30)->create();
当我意识到我的模型没有使用 HasFactory 特征时,我遇到了同样的问题。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'categories';
}
因此请确保您的模型正在使用此特征。
如果您使用的是 laravel 的第 8 版,您可以使用目录:
使用App\Models\Article;
Article::factory()->计数(30)->创建();
我在执行 运行 命令时出现标题错误:
php artisan db:seed
我的截图:
我不知道这个问题是从哪里来的。我正在搜索代码示例和解决方案,但我没有找到任何东西:(
ArticlesTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
// use Laracasts\TestDummy\Factory as TestDummy;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Models\Article::class, 30)->create();
}
}
ArticleFactory.php
<?php
namespace Database\Factories;
use App\Models\Model;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ModelFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = App\Models\Article::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $faker->text(50),
'body' => $faker->text(200)
];
}
}
DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(ArticlesTableSeeder::class);
}
}
提前感谢您的帮助!
尝试改变
factory(App\Models\Article::class, 30)->create();
至
App\Models\Article::factory()->count(30)->create();
在 laravel 8 中删除了默认路由命名空间。
尝试改变:
ArticlesTableSeeder.php:
factory(App\Models\Article::class, 30)->create();
至:
\App\Models\Article::factory()->count(30)->create();
ArticleFactory.php:
protected $model = App\Models\Article::class;
至:
protected $model = \App\Models\Article::class;
您可能需要更改:
'title' => $faker->text(50),
'body' => $faker->text(200)
至:
'title' => $this->faker->text(50),
'body' => $this->faker->text(200)
如果您使用的是 laravel 的版本 8,请查看升级指南。 “Laravel 的模型工厂功能已完全重写以支持 类 并且与 Laravel 7.x 样式工厂不兼容。但是,为了简化升级过程,一个新的已创建 laravel/legacy-factories 包以继续使用现有工厂 Laravel 8.x。您可以通过 Composer 安装此包:
作曲家要求 laravel/legacy-factories"
https://laravel.com/docs/8.x/upgrade#seeder-factory-namespaces
ArticlesTableSeeder.php
<?php
namespace Database\Seeders;
use App\Models\Article;
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Article::factory()->times(30)->create();
}
}
ArticleFactory.php
<?php
namespace Database\Factories;
use App\Models\Article;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ArticleFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Article::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->text(50),
'body' => $this->faker->text(200)
];
}
}
这里提到的所有建议都是正确的。
如果您使用 Laravel 8,有时 运行 composer require laravel/legacy-factories
可能会解决您的问题。
此外,如果您收到 Class 'Database\Factories\ArticleFactory' not found
的错误消息
然后确保您有 class ArticleFactory extends Factory
而不是 ModalFactory。
并确保您像此处一样在文章模型中使用 HasFactory。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use HasFactory;
}
改变
factory(App\Models\Article::class, 30)->create();
至
\App\Models\Article::factory(30)->create();
当我意识到我的模型没有使用 HasFactory 特征时,我遇到了同样的问题。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'categories';
}
因此请确保您的模型正在使用此特征。
如果您使用的是 laravel 的第 8 版,您可以使用目录:
使用App\Models\Article; Article::factory()->计数(30)->创建();