【问题标题】:Cakephp model named "Club" not working at all! Reserved keyword?名为“俱乐部”的 Cakephp 模型根本不起作用!保留关键字?
【发布时间】:2011-09-02 19:45:46
【问题描述】:

在 Cakephp2.0 中,我有一个名为“Club”的模型,我从“ClubsController”访问它。如果我尝试在我的控制器中执行 $this->Club->find,它会显示“错误:找不到模型 Club 的数据库表 clubs。”堆栈跟踪有

.....ClubsController.php(7): Model->find('first', Array)

真正的数据库表称为“ClubTable”,我在$useTable = 'ClubTable' 的类中指定了它。这让我相信它会自动制作一个名为“俱乐部”的模型,这与我的模型不同。文件夹结构如下:

/app/Model/Club.php
/app/Plugin/Admin/Controller/ClubsController.php

如果我将模型更改为 Club123.php,模型名称为“Club123”,那么这就是关键所在。然后在控制器中,我只需执行$this->loadModel('Club123'); 即可完美运行并加载我的模型并连接到我的数据库和表“ClubTable”。

“俱乐部”在某种程度上是保留关键字吗?

为了进一步混淆这个问题,当我不使用插件时它可以正常工作(在 /app/Controllers 文件夹中创建一个 ClubsController)。总结问题:

从我的插件内部调用时找不到模型 Club,但模型 Club123 可以。模型 Club 不在插件内时可以找到。

在我拔头发时,任何帮助将不胜感激。哦,我也删除了/app/tmp/cache/models/文件夹下的所有文件。

【问题讨论】:

  • 文件名应该是情人大小写。你为什么不使用蛋糕烘焙功能?

标签: cakephp model


【解决方案1】:

仔细检查您的命名约定。

在文件系统中,所有名称都应为小写字母,并用下划线分隔单词。

在 PHP 中,它们应该是 CamelCase。

我建议重新阅读this part of the book 以确保您正确了解所有内容。

我发现设置和使用Cake's Bake console 可以解决这些问题,因为一切都是自动生成的 :)

【讨论】:

【解决方案2】:

这个问题已经死了好几个月了。 CakePHP 使用“插件”处理各种环境的能力被证明太笨拙了。 CodeIgniter 让我可以轻松创建嵌套目录并访问常用模型。所以我想我对这个问题的解决方案是:切换到 CodeIgniter!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多