【问题标题】:Lumen database seeding error流明数据库播种错误
【发布时间】:2017-05-05 04:59:43
【问题描述】:

我正在学习使用 Laravel 的 Lumen 框架进行后端开发,并且我正在按照 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 可以完美地播种:

种子:PhotoTableSeeder

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

[Illuminate\Database\QueryException] SQLSTATE[42S02]:未找到基表或视图:1146 表“homestead.photos”不存在(SQL:插入“照片”(“链接”、“类别 ID”、 `date`) 值 (https://placehold.it/259, 3, 2012-05-28))

[PDOException] SQLSTATE[42S02]: 未找到基表或视图:1146 表 'homestead.photos' 不存在

我不知道为什么仍然调用旧表名。我猜它被保存在某个地方或者我遗漏了什么,我无法找出错误的原因。

【问题讨论】:

  • so.. 到目前为止,查看您的代码,没有看到任何名为 migrations 的内容。好吧,详细说明一下,用于创建表的迁移,用于表示表中的一行的模型,工厂创建种子,播种机将种子插入数据库..
  • laravel 也总是假设表名是模型的复数名称.. - 即。照片作为照片.. 可以用protected $table 覆盖,抱歉绕道..
  • 使用DB::table('photo')选择指定的表。
  • @solarhell 正如 Bagus 和 Eric 所说,模型中的表名覆盖正是我所需要的。

标签: php mysql laravel lumen laravel-seeding


【解决方案1】:

Eloquent 在数据库中查找模型类名称的复数形式作为表。所以在这种情况下,它期望找到一个名为“Photos”的表

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

protected $table = 'photo';

到你的照片模特班。我倾向于这样做,即使我使用默认约定只是为了提醒自己模型正在引用哪个表

【讨论】:

    猜你喜欢
    • 2014-03-01
    • 2012-07-21
    • 2020-01-08
    • 2021-03-19
    • 2016-04-01
    • 1970-01-01
    • 2011-08-29
    • 2015-09-25
    相关资源
    最近更新 更多