Php 尽管我没有使用名为“users”的模型,为什么auth组件仍访问“users”表?
我使用的是CakePHP4,当我尝试登录一个用户时,它会告诉我没有名为Users的表。但是我在代码中没有使用“Users”,只使用了没有“s”的“User”Php 尽管我没有使用名为“users”的模型,为什么auth组件仍访问“users”表?,php,database,authentication,cakephp,cakephp-4.x,Php,Database,Authentication,Cakephp,Cakephp 4.x,我使用的是CakePHP4,当我尝试登录一个用户时,它会告诉我没有名为Users的表。但是我在代码中没有使用“Users”,只使用了没有“s”的“User” 我找不到bug以及如何解决它。这是在与命名约定作斗争时很容易发生的事情,因为CakePHP框架遵循约定优先于配置的方法 数据库表名(以及相应的表类)的约定是使用复数,因此users而不是user,因此,只要CakePHP提供模型/表名作为默认值,它就会相应地使用复数名 默认情况下,auth组件的验证器(顺便说一句,您应该考虑改用)配置为使
我找不到bug以及如何解决它。这是在与命名约定作斗争时很容易发生的事情,因为CakePHP框架遵循约定优先于配置的方法 数据库表名(以及相应的表类)的约定是使用复数,因此
users
而不是user
,因此,只要CakePHP提供模型/表名作为默认值,它就会相应地使用复数名
默认情况下,auth组件的验证器(顺便说一句,您应该考虑改用)配置为使用Users
model/table别名,复数形式。相关的选项是userModel
,如果要使用不同的模型,则需要相应地更改该选项。还有其他使用复数的选项,比如定义URL数组的选项,它们使用用户
来定位用户控制器
(控制器名称按惯例也是复数)
模型层也有实体,实体的惯例是使用单数名称,因此User
。这是不为表使用单数名称的另一个原因,即使可以通过配置,也很容易造成与实体类名的混淆
我强烈建议您遵循约定,使用烘焙控制台创建模型、控制器等,尤其是初学者。一旦你熟悉了CakePHP的来龙去脉,你就可以开始随心所欲地使用它,并在必要时偏离惯例
另见
userModel
选项,它可以正常工作。但是我将更改我的表名以遵守cakePhP约定。非常感谢你的帮助!