【问题标题】:kohana 3.2 creating a model for a table with underscore in its namekohana 3.2 为名称中带有下划线的表创建模型
【发布时间】:2014-09-07 12:40:02
【问题描述】:

我在为名为 product_details 的表创建模型时遇到问题,有时在搜索后,我找到了这个答案

Kohana 3.2: Calling model with underscore in name

根据答案,我采用了以下方法。我创建了 Model_Product_Details 然后我声明了protected $_table_name = 'product_details'; 然后将其保存在 application/classes/models/product_detail.php

我用这段代码在控制器中调用它:

$product_details = ORM::factory(product_detail);

但是该死的,它没有用。返回的错误是ErrorException [ Fatal Error ]: Class 'Model_Product_detail' not found

我尝试通过删除下划线来重命名表、模型和文件名,并且成功了。但问题是我使用的数据库来自旧系统,所以我不能更改它的名称。我希望能立即给我帮助。

【问题讨论】:

    标签: php kohana kohana-3 kohana-orm kohana-3.2


    【解决方案1】:

    您描述的问题不是缺少或错误命名的表,而是对象名称。 当模型名称中使用下划线时,在 Model_ 部分之后,每个下划线都应该是一个文件夹。对于名为 Model_Product_Details 的类,Kohana 期望文件 details.php 位于文件夹 models/product/details.php 中。

    protected $_table_name = 'product_details'; 
    

    应该以正确的方式指向桌子

    【讨论】:

    • 是的。这是正确的。看看我的问题中的链接。接受的答案与您的相同。
    【解决方案2】:

    在这种情况下,您需要将模型重命名为 productDetails。 Kohana 在model/product 子目录中搜索此模型。在这里看到这个:link

    “当不希望创建新的目录级别时,应使用 CamelCased 类名。”

    【讨论】:

    【解决方案3】:

    在分析了我第三次提供的链接上的答案后(我认为),参考我所做的方法,我只需要从文件名和模型名中删除下划线即可。

    所以这是修复它的方法。假设您有一个名为 product_details 的表。您必须创建 Model_ProductDetail 然后在里面,声明 protected $_table_name = 'product_details'; 然后将其保存为 productDetail.php

    【讨论】:

    • 由于linux系统区分大小写,另存为ProductDetail.php(在model文件夹中),同理像ORM::factory('ProductDetail')一样使用。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2011-07-11
    相关资源
    最近更新 更多