我尝试运行" ServiceTableSeeder"数据库中的表我收到错误信息。
我尝试运行" php artisan db:seed
"
消息:
[symfony\component|Debug\Exception\FetalErrorException]
cannot redeclare DatabaseSeeder::run()
DatabaseSeeder .php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
$this->call('ServiceTableSeeder');
}
}
ServiceTableSeeder.php
<?php
class ServiceTableSeeder extends Seeder {
public function run()
{
Service::create(
array(
'title' => 'Web development',
'description' => 'PHP, MySQL, Javascript and more.'
)
);
Service::create(
array(
'title' => 'SEO',
'description' => 'Get on first page of search engines with our help.'
)
);
}
}
如何解决这个问题。我是laravel的新人,请指导我。
答案 0 :(得分:2)
对于那些面临同样问题的人,请从.env文件确认您的APP_ENV变量,因为如果我们设置
,Laravel不允许我们运行db:seed&#39; APP_ENV =生产&#39;
为了数据库记录。
因此,请务必将APP_ENV的值设置为&#39; staging&#39;或者&#39;本地&#39;然后运行php artisan db:seed
答案 1 :(得分:1)
我认为问题是您的ServiceTableSeeder.php
文件。您应该确保此文件中的类文件名是ServiceTableSeeder
而不是DatabaseSeeder
答案 2 :(得分:1)
考虑到Service是您创建的模型,并且此模型位于App命名空间内的app文件夹内,请尝试以下操作:
修复您的ServiceTableSeeder.php标题:
<?php
use Illuminate\Database\Seeder;
use App\Service;
class ServiceTableSeeder extends Seeder {
public function run()
{
Service::create(
array(
'title' => 'Web development',
'description' => 'PHP, MySQL, Javascript and more.'
)
);
Service::create(
array(
'title' => 'SEO',
'description' => 'Get on first page of search engines with our help.'
)
);
}
}
当您将模型移动到app \ models时,必须在每个模型文件中声明:
Models.php:
namespace App\Models;
在您的种子文件中,使用:
use App\Models\Service.php;
您是否使用composer自动加载文件?如果是这样,请更新您的composer.json文件以包含您的模型位置:
"autoload": {
"classmap": [
"database",
"app/Models"
],
"psr-4": {
"App\\": "app/"
}
},
最后,在命令行中运行:
composer dump-autoload