Я пытаюсь запустить таблицу «ServiceTableSeeder» в базе данных, я получил сообщение об ошибке.
Я пытаюсь бежать «php artisan db:seed
«
Msg:
[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, пожалуйста, направьте меня.
Учитывая, что Service — это созданная вами модель, и эта модель находится в папке приложения, в пространстве имен приложения, попробуйте следующее:
Исправьте свой заголовок 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
Для тех, кто сталкивается с той же проблемой, подтвердите переменную APP_ENV из файла .env, потому что Laravel не позволяет нам запускать db: seed, если мы установим
‘APP_ENV = Производство’
ради записей базы данных.
Итак, убедитесь, что вы установили значение APP_ENV в ‘staging’ или ‘local’ и затем запустили php artisan db: seed
Я думаю, что проблема ваша ServiceTableSeeder.php
файл. Вы должны убедиться, что имя файла класса в этом файле ServiceTableSeeder
и не DatabaseSeeder