Я изучаю back-end разработку с помощью Laurvel's Lumen framework, и я пишу класс посева базы данных после Laravel's documentation. Ниже приведены коды:Lumen база данных ошибка посева
Модель app\Photo.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Photo extends Model
{
protected $fillable = [
'link', 'category_id', 'date'
];
}
Модель завода database\factories\ModelFactory.php
$factory->define(App\Photo::class, function (Faker\Generator $faker) {
return [
'link' => 'https://placehold.it/' . mt_rand(200, 400),
'category_id' => rand(1, 6),
'date' => date("Y-m-d", mt_rand(1263618000, 1481428800))
];
});
DatabaseSeeder
и PhotoTableSeeder
классы database\seeds\DatabaseSeeder.php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call('PhotoTableSeeder');
}
}
class PhotoTableSeeder extends Seeder
{
public function run()
{
factory(App\Photo::class, 10)->create();
}
}
Ранее имя таблицы в базе данных MySQL был photos
и высева отлично работает с помощью команды php artisan db:seed
:
высевают: PhotoTableSeeder
Но когда я изменил имя таблицы photo
и выполнить ту же команду, эти ошибки произошли:
[Illuminate \ Database \ QueryException] SQLSTATE [42S02]: Базовая таблица или точка зрения не найдены: 1146 «homestead.photos» не существует (SQL: insert into `photos` (` link`, `category_id`,` date`) (https://placehold.it/259, 3, 2012-05-28))
[PDOException] SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 'homestead.photos' таблица не существует
Я не» Знаю, почему имя старой таблицы все еще называется. Я предполагаю, что он был где-то сохранен или я что-то пропустил, я не могу понять причину ошибки.
так что до сих пор смотришь на свой код, ничего не называемое ['migrations'] (https: // lumen.laravel.com/docs/5.3/database#migrations). Хорошо, чтобы разработать немного больше, миграции, используемые для создания таблицы, модели, используемые для представления одной строки в таблице, в то время как фабрика для создания семян, в то время как сеялки , вставьте семя в базу данных. –
также laravel всегда предполагают, что имя таблицы - это множественное имя модели .. - т.е. фото как фотографии .. можно переопределить с помощью 'protected $ table' извините за sidetracking. –
Используйте' DB :: table ('photo') ', чтобы выбрать указанную таблицу. – solarhell