Laravel: «php artisan db: seed» не работает

Я пытаюсь запустить таблицу «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, пожалуйста, направьте меня.

3

Решение

Учитывая, что 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
1

Другие решения

Для тех, кто сталкивается с той же проблемой, подтвердите переменную APP_ENV из файла .env, потому что Laravel не позволяет нам запускать db: seed, если мы установим

‘APP_ENV = Производство’

ради записей базы данных.

Итак, убедитесь, что вы установили значение APP_ENV в ‘staging’ или ‘local’ и затем запустили php artisan db: seed

2

Я думаю, что проблема ваша ServiceTableSeeder.php файл. Вы должны убедиться, что имя файла класса в этом файле ServiceTableSeeder и не DatabaseSeeder

1
По вопросам рекламы [email protected]