我使用
创建了一个迁移文件 php artisan make:migration create_todoapps_table
。
以表名to_do_apps创建迁移文件
(Schema::create('to_do_apps', function (Blueprint $table) {...})
。
但是我不希望表名是to_do_apps
。
所以我尝试将其手动更改为todoapps
(Schema::create('todoapps', function (Blueprint $table) {...})
。
进行迁移时,此方法工作正常,并且正在创建具有todoapps的表。但是,在执行工厂和种子操作时,它试图将数据添加到旧表名to_do_apps
本身,这会导致错误,因为该表不可用。
有没有办法解决这个问题?
如何在不破坏任何内容的情况下更改迁移文件中的表名?
答案 0 :(得分:2)
用于模型的表的名称来自模型本身,而不是来自迁移。
Laravel假定模型表的名称是模型名称的snake_case。如果要使用表todoapps
,只需将以下行添加到应从该表中读取数据的模型中(可能您的模型称为ToDoApps
)
protected $table = 'todoapps';
答案 1 :(得分:2)
如果表名不是默认的命名约定,则可以在Eloquent模型中进行设置。以下是Laravel Docs
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_flights';
}
使用模型的种子将使用正确的表名。