【问题标题】:How to find a model in cakePHP (I can't find)?如何在 cakePHP 中找到模型(我找不到)?
【发布时间】:2016-05-16 14:21:14
【问题描述】:

我接手了一个 cakePHP 项目,我是新手,我觉得不容易,Magento 应该很难,但我觉得 cakePHP 更难,但也许我还没有达到我知道它的那一刻......

我有下一个型号(用于表格邮政编码):

public $belongsTo = array(
    'Postcode' => array(
        'className' => 'Postcode',
        'foreignKey' => 'postcode_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),

一切正常,但使用 AgentRansack 工具我找不到模型邮政编码。除了表的名称是邮政编码之外,我什至找不到邮政编码和邮政编码的关系。

如何以与 Postcode.php 类不同的方式设置这样的模型?

【问题讨论】:

  • 如果您阅读文档,事情会更容易:)。在继续继承的项目之前,我建议您 do the blog tutorial(未阅读,)。

标签: cakephp model


【解决方案1】:

当请求不存在具体模型类(或由于某种原因找不到)的模型时,将从AppModel 类生成动态模型对象。

来自 CakePHP 食谱:

如果在/app/Model 中找不到对应的文件,CakePHP 会为您动态创建一个模型对象。这也意味着如果您的模型文件没有正确命名(例如,如果它被命名为成分.php 或 Ingredients.php 而不是 Ingredient.php),CakePHP 将使用 AppModel 的实例而不是您的模型文件( CakePHP 假设它丢失了)。如果您尝试使用您在模型中定义的方法,或者附加到模型的行为,并且您收到的 SQL 错误是您正在调用的方法的名称,这肯定表明 CakePHP找不到您的模型,您需要检查文件名、应用程序缓存或两者。

http://book.cakephp.org/2.0/en/models.html#understanding-models

【讨论】:

  • 感谢 ndm 的快速答复。我已经读过这个了。但是如果使用 Postcode 这个类,它和表 postcodes 有什么关系呢?
  • @Francois99 我不知道你所说的“它是如何相关的”,你需要更具体一点。我的意思是 CakePHP 是如何知道将表 postcodes 用于模型 Postcode,那么答案是“naming conventions”,模型是单数驼峰式表名,反之亦然,表是复数下划线模型名。跨度>
  • 非常感谢,没想到,c​​akePHP 很聪明。确实 Inflector::pluralize('Postcode') = 邮政编码(以及邮政编码,因为邮政编码不存在)
  • @Francois99 实际上模型使用Inflector::tableize()
  • @ndm,AD7six,谢谢,确实是 Inflector::tableize('Postcode') = 'postcodes'
【解决方案2】:

您需要为您的“邮政编码”创建一个类,

阅读以下内容:http://book.cakephp.org/2.0/en/models.html

但它应该看起来像这样:

// app/Model/Postcode.php
App::uses('AppModel', 'Model');

class PostCode extends AppModel {

    public $validate = array(
        // Validation
    );

   // Replace 'ModelName' with the name of the class where the code sites you mentioned above
    public $hasMany = array(
        'ModelName' => array(
            'className' => 'ModelName',
            'foreignKey' => 'postcode_id'
        )
    );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多