php - Lumen 数据库播种错误

标签 php mysql laravel lumen laravel-seeding

我正在使用 Laravel 的 Lumen 框架学习后端开发,并且正在编写数据库播种类(class) Laravel's documentation 。下面是代码:

模型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))
    ];
});

DatabaseSeederPhotoTableSeederdatabase\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 可以完美地进行播种:

Seeded: PhotoTableSeeder

但是当我将表名称更改为 photo 并运行相同的命令时,出现了这些错误:

[Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'homestead.photos' doesn't exist (SQL: insert into `photos` (`link`, `category_id`, `date`) values (https://placehold.it/259, 3, 2012-05-28))

[PDOException] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'homestead.photos' doesn't exist

不知道为什么还是叫旧的表名。我猜它被保存在某个地方或者我丢失了一些东西,我无法找出错误的原因。

最佳答案

Eloquent 查找模型类名称的复数形式作为数据库中的表。因此,在本例中,它期望找到一个名为“照片”的表

如果由于某种原因您需要将表格命名为 Photo,您可以随时通过添加来覆盖默认值

protected $table = 'photo';

到你的照片模型类。即使我使用默认约定,我也倾向于这样做,只是为了给自己明确模型引用哪个表

关于php - Lumen 数据库播种错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234505/

相关文章:

php - 在 PHP 中执行存储过程后调用 odbc_fetch_array 给出错误 [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index

javascript - 使用 PHP 操作文件从 HTML 输入表单发布数据,无需刷新页面

mysql - 如果服务器崩溃处理付款响应?

php - 无法加载 imagick 库

php - 从 laravel 将 DOB 插入 mysql

php - 在Mysql中按文件插入数据时出错

mysql - mysql中查找客户地址经纬度的公式是什么

mysql - 使用自连接和子查询优化 UPDATE SQL 查询

javascript - 如何在javascript中根据外键检索数据

java - 将 Java Applet 连接到 MySQL DB - 通信链路故障