CakePHP中保留的数据库表名是什么?

时间:2011-06-11 10:57:21

标签: database cakephp naming-conventions reserved-words

3 个答案:

答案 0 :(得分:1)

  1. 不,没有。只要您遵守Cake的命名约定,Cake就不关心您对表的命名。它在控制器第一次加载模型时生成它用于魔术模型方法的模式;你不必抬起手指。请参阅http://book.cakephp.org/view/903/Model-and-Database-Conventions

  2. 最好的建议:不要打蛋糕。如果你真的不能坚持Cake的约定,你不妨使用Cake;这是非常困难,令人困惑和成功只是意味着你已经失去了蛋糕的大部分重装能力。多次化你的表名并不是很糟糕,而Cake会很高兴。

  3. 此功能已在1.3中提供 - 将您喜欢的任何内容命名为您的表(只要它们是复数词。)

  4. - 您可能会在控制台中查看烘焙应用程序,这样您就可以熟悉Cake想要查看的内容以及它在不同的表格布局上的工作方式。


    澄清后编辑:

    您的模型,控制器和视图目录都有一个共同的名称,如下所示:

     // 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的魔术autoRender希望找到一个视图文件    //与呈现它的动作相同的名称 - Rates :: index()的视图是index.ctp

    所有模型都扩展了Cake的AppModel类(扩展了Cake的Model类),不需要前缀。所有控制器都将扩展Cake的AppController类 - 类名以Controller为后缀,文件名后缀为_Controller。

    你可以在/ app中使用AppModel和AppController,它们明确地存在于你可能拥有的任何应用程序范围的自定义方法/属性中。由于所有模型/控制器都扩展了它们,因此继承会自动分散您放置在它们中的任何属性/方法 - 例如,Auth。 ^ _ ^

    但我猜你仍然可以命名表格模型,控制器或视图等等。 $ name属性是别名;您可以通过使用不同的名称别名来创建同一模型中同一个表的多个实例。您可以创建没有表的模型,并且可以在单个模型中在多个表(或数据库或服务器)之间切换。您还可以为模型创建非数据库类型的数据对象(例如平面xml文件)。动态命名的类/方法($$ Model :: save()等)无论如何都是在引擎盖下运行的。为了干扰我的应用程序,我在迭代中做了类似的事情,我没有遇到任何问题。 (虽然我个人怀疑实际上是否会推出一个名为Model的本地模型,但是值得你投入实验的努力......)

    就此而言,Cake的API将其所有类别的方法等等(在代码库中生成注释)生成:

    http://api13.cakephp.org/classes

    HTH。 :d

答案 1 :(得分:1)

我从经验中知道你不能使用像'files'和'models'这样的表名,因为它们创建了Cake已经用于其他东西的类,例如File和Model。

我没有遇到任何其他问题,但我确信他们会在那里找到。

我建议避免使用蛋糕核心类使用的任何名称。

答案 2 :(得分:1)

我知道这是一个旧线程,但只是遇到它寻找其他东西。我认为这应该有助于回答问题#2。在database.php中,您可以在DATABASE_CONFIG类/app/config/database.php中添加db表前缀。请参阅下面配置数组中的最后一个键:

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'database_name',
    'prefix' => '',
);