【问题标题】:How to fix the "Table 'database.teches' doesn't exist" error?如何修复“表'database.teches'不存在”错误?
【发布时间】:2014-01-16 22:47:43
【问题描述】:

不确定为什么 migrate 正在寻找“teches”而不是真正的表名“techs”??

文件:TechsTableSeeder.php

class TechsTableSeeder extends Seeder {

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    Eloquent::unguard();

    Tech::create(
        [
        'name'=>'technology',
        'description'=>'...',
        'year'=>'2014'
        ]);

}

} 

在使用 php artisan db:seed --class="TechsTableSeeder" 时,我在终端中收到以下错误:

[照亮\数据库\查询异常]
SQLSTATE [42S02]:未找到基表或视图:1146 表 'database.teches' 不存在(SQL:插入teches (name, description, year, updated_at, created_at) 值(技术, ..., 2014, 2013-12-30 03:23:39, 2013-12-30 03:23:39))

Model Tech.php 确实存在并且是通过php artisan generate:model 自动生成的

Tech如下:

class Tech extends Eloquent {
    protected $guarded = array();

    public static $rules = array();
}

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    它尝试将表名放在复数形式。

    只需添加

    protected $table = 'tech';
    

    在您的模型类技术中

    【讨论】:

    • 我觉得这有点烦人。以复数形式命名数据库和表被认为是不好的做法,而 Laravel 在幕后推广并实现了这一点?到目前为止,我喜欢 Laravel,但这个功能很烦人
    【解决方案2】:

    Antonio 是对的,顺便说一下,如果它适用于模型本身,您可以改为以这种方式格式化播种器:

    class TechsTableSeeder extends Seeder {
    
      public function run()
      {
        $techs = [
    
        ];
    
        DB::table('techs')->insert($techs);
      }
    
    }
    

    我在播种时总是喜欢这种方法。

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2020-11-16
      • 2021-09-17
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多