即使在 Laravel eloquent 中设置后,表名也不会改变?

Posted

技术标签:

【中文标题】即使在 Laravel eloquent 中设置后,表名也不会改变?【英文标题】:Table name won't change even after set in Laravel eloquent? 【发布时间】:2022-01-13 06:54:31 【问题描述】:

OrderProducts 雄辩:

class OrderProduct extends Model

    use HasFactory;

    protected $table = 'order_products';

我为我的表名创建了一个模型,名为order_products。 我雄辩的名字是OrderProduct。然后我将 Eloquent 中的表名改为 protected $table = "order_products"`。

仍然,我得到 order_product 表不存在问题? 为什么?

【问题讨论】:

您的错误说 order_product 不存在,但您的表是 order_products 也许这是您的错误? 类 OrderProduct 扩展模型 使用 HasFactory;受保护的 $table = 'order_products'; @LucasSaladini 是的。但我的表名是 order_products。当我尝试从 Eloquent 获取数据时,它说 order_product 不存在。实际表名是 order_products 更改模型不会自动更改数据库中的表名 【参考方案1】:

更改模型不会自动更改数据库中的表名

您可以通过在模型上定义表格属性来指定自定义表格名称:

class OrderProduct extends Model

    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'order_products';

参考:https://laravel.com/docs/8.x/eloquent#table-names

【讨论】:

我这样做了,但我仍然收到此错误 你可以运行:composer dump-autoload -o,然后再试一次吗? 试过了。不用找了。还是一样 是否有理由不将数据库表名重命名为 Laravel 期望的名称? 谢谢老兄。我发现了问题

以上是关于即使在 Laravel eloquent 中设置后,表名也不会改变?的主要内容,如果未能解决你的问题,请参考以下文章

laravel中判断eloquent是否为空

Laravel Eloquent重音角色问题

在 doFilter 中设置后获取 Cookie

Laravel Eloquent 判断取出的结果集是否为空

如何在navigationController swift中设置后按变量?

Laravel Eloquent 查询忽略列值