Database CakePHP中保留的数据库表名是什么?
我在计划我的数据库,因为CakePHP没有用自己的前缀命名它的类,所以有许多类可能与根据命名约定创建的模型类相冲突 因此,我的问题分为三个部分:Database CakePHP中保留的数据库表名是什么?,database,cakephp,naming-conventions,reserved-words,Database,Cakephp,Naming Conventions,Reserved Words,我在计划我的数据库,因为CakePHP没有用自己的前缀命名它的类,所以有许多类可能与根据命名约定创建的模型类相冲突 因此,我的问题分为三个部分: 有数据库列表吗 保留或保留的表名 检查它是否正确的简单方法?信息技术 如果我计划建立数据库会很痛苦 有100张桌子,请注意 这些表及其连接将 必须重新命名 有没有一种不破坏任何CakePHP魔法的简单方法?有广告吗?通过在表名的开头添加自己的前缀“my_”或类似名称,以其他方式命名表是最好的方式吗 名称空间或类似的东西即将出现吗 CakePHP版本2允
澄清后编辑: 您的模型、控制器和视图目录都共享一个通用名称,如下所示:
// in /app/models/rate.php
class Rate extends AppModel {
var $name = 'Rate';
// in /app/controllers/rates_controller.php -- note the underscore
class RatesController extends AppController {
// controllers are capitalized + plural
var $name = 'Rates';
//在/app/views/rates/*.ctp中-Cake的magic autoRender希望找到一个具有
//与呈现它的操作同名-Rates::index()的视图为index.ctp
您的所有模型都扩展了cake的AppModel类(它扩展了cake的Model类),不需要前缀。所有控制器都将扩展Cake的AppController类-类名后缀为Controller,文件名后缀为_Controller
您将在/app中定义AppModel和AppController,它们明确地存在于您可能拥有的任何应用程序范围的自定义方法/属性中。由于您的所有模型/控制器都对它们进行了扩展,因此继承会自动分散您在其中放置的任何属性/方法,例如Auth^_^
但我想,你仍然可以给一个表命名为模型、控制器、视图等等。$name属性是一个别名;您可以在同一模型中创建同一表的多个实例,方法是使用不同的名称对其进行别名。您可以创建没有表的模型,并且可以在单个模型中的多个表、数据库或服务器之间切换。还可以为模型创建非数据库类型的数据对象(例如平面xml文件)。动态命名的类/方法($$Model::save()等)是在后台运行的。我在迭代中也做过类似的事情,目的是让我的应用程序干涸,我没有遇到任何问题。(尽管我个人怀疑是否真的值得你在实验中付出努力来实现一个名为model的本地模型…)
在这一点上,Cake的API详细说明了它的所有类、方法等(根据代码库中的注释生成):
嗯D根据经验,我知道不能使用“文件”和“模型”这样的表名,因为它们创建的类已经被Cake用于其他事情,如文件和模型 我没有遇到过任何其他类似的问题,但我相信它们是可以找到的
我建议避免使用cake核心类使用的任何名称。我知道这是一个有点陈旧的主题,但只是在搜索其他内容时遇到它。我认为这应该有助于回答问题2。在database.php中,您可以在
database\u CONFIG
class/app/CONFIG/database.php中添加db表前缀。请参阅下面配置数组中的最后一个键:
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
);
问题是关于保留的表名,如“模型”和“对象”表,这些表的模型根据CakePHPs命名约定将成为“模型”和“对象”,而cake已经使用了这些类。如果我使用$this->Model->一些它不起作用的东西。是的,我应该说我很清楚实际的惯例和蛋糕是如何工作的。你不必为我拼写,但无论如何还是要谢谢你;)然而,最后一句话是对我第一个问题的回答,谢谢:)第二个问题我应该更详细一些,我并不是说我想打破惯例,我只是想知道是否有什么办法可以不打破惯例。我有一个表对象,我不能像那样使用它,因为已经存在该对象类。所以我的问题是,如果我真的必须在数据库中有objects表,我如何使它工作。如果没有好的方法,那么最好的解决方法是在开始时添加前缀,比如:my_objects.我刚刚在这个问题上受到了打击(Cake 2.2)。一年多以来,我一直在使用一款名为“文件”的网络应用程序。现在我终于使用了Cake的模式系统,我得到了一个奇怪的“错误:在datasource中找不到模型文件的表1”,我几乎可以肯定这是因为与核心类的命名冲突。直到现在,蛋糕才出差错!是的,我刚才去过。这是一种痛苦,但我认为,在3.0中,使用名称空间,您将能够做到这一点。