我在为名为 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
我尝试通过删除下划线重命名表,模型和文件名,但它确实有效。但问题是我使用的数据库来自遗留系统,因此我无法更改其名称。我希望能立即给我帮助。
答案 0 :(得分:2)
您描述的问题不是缺失或错误名称表,而是对象名称。 当在模型名称中使用下划线时,在Model_部分之后,每个下划线都应该作为文件夹。对于名为Model_Product_Details的类,Kohana希望文件details.php位于models / product / details.php文件夹中。
protected $_table_name = 'product_details';
应该以正确的方式指向表格
答案 1 :(得分:0)
在我第三次提供的链接(我认为)上分析了答案之后,参考我已经完成的方法,我只需要从文件名和模型名称中删除下划线。
所以这就是解决问题的方法。假设您有一个名为 product_details 的表。您必须在内部创建 Model_ProductDetail ,声明 protected $ _table_name ='product_details'; 然后将其另存为 productDetail.php
答案 2 :(得分:0)
在这种情况下,您需要将模型重命名为productDetails
。 Kohana在model/product
子目录中搜索此模型。请在此处查看:link。
“当不希望创建新的目录级别时,应使用CamelCased类名。”