【问题标题】:Why does the auth component access the `users` table, despite me not using a model named `Users`?尽管我没有使用名为 `Users` 的模型,为什么 auth 组件会访问 `users` 表?
【发布时间】:2020-10-18 21:40:48
【问题描述】:

我正在使用 cakephp 4,当我尝试登录用户时,它说我没有名为 Users 的表。但是我在代码中没有使用“用户”,只有“用户”没有“s”。

我没有找到错误以及如何解决它。

【问题讨论】:

    标签: php database authentication cakephp cakephp-4.x


    【解决方案1】:

    当您与命名约定作斗争时,这很容易发生,因为 CakePHP 框架遵循约定优于配置的方法。

    数据库表名(和表类)的约定是使用复数,所以users而不是user,因此无论CakePHP默认提供模型/表名,它都会相应地使用复数名。

    默认情况下,auth 组件的身份验证器(顺便说一句已弃用,您应该考虑改用authentication plugin)配置为使用Users 模型/表别名,复数形式。相关选项是userModel,如果您想使用不同的模型,则需要相应地更改。还有其他使用复数的选项,例如定义 URL 数组的选项,它们使用 Users 来定位 UsersController(控制器名称也按照惯例是复数)。

    模型层也有实体,实体的约定是使用单数名称,所以User。这也是表不使用单数名称的另一个原因,即使可以通过配置,也很容易与实体类名称混淆。

    我强烈建议您遵循约定,并使用烘焙控制台来创建模型、控制器等,特别是如果您是初学者。一旦你熟悉了 CakePHP 的来龙去脉,你就可以开始随心所欲地改变它,并在必要时偏离约定。

    另见

    【讨论】:

    • 哦...好吧,我更改了userModel 选项并且它有效。但我要更改我的表名以尊重 cakePhP 约定。非常感谢您的帮助!
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多