LaravelのLumenフレームワークを使ったバックエンド開発を学んでおり、Laravelのドキュメンテーションに従ってデータベースシードクラスを書いています。以下にコードを示します。
モデル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: `photos` に挿入 (`link`, `category_id`, `date` ) 値 ( https://placehold.it/259、3、2012-05-28))
[PDOException] SQLSTATE[42S02]: ベース テーブルまたはビューが見つかりません: 1146 テーブル 'homestead.photos' が存在しません
古いテーブル名がまだ呼び出されている理由がわかりません。どこかに保存されていたのか、何か抜けているのか、エラーの原因がわかりません。