2012-03-13 67 views
1

這是一個驅動我batty。CF ORM - 無法加載目標CFC

我設置了ORM。當我運行ORMReload()時,出現以下錯誤。

無法爲CFC產品中的關係屬性類別加載目標CFC productCategories。

的Application.cfc ORM配置

this.ormEnabled = true; 
this.ormsettings = { 
     cfclocation = "_model" 
}; 

products.cfc

component persistent="true" table="products" { 
property name="id" fieldtype="id"; 
property name="productcode" ormtype="string"; 
property name="title" ormtype="string"; 
property name="introduction" ormtype="text"; 
property name="description" ormtype="text"; 
property name="image1" ormtype="string"; 
property name="image2" ormtype="string"; 
property name="image3" ormtype="string"; 
property name="deletedAt" ormtype="date"; 

property name="category" fieldtype="many-to-one" cfc="productCategories" fkcolumn="categoryid"; 

//init() 
public function init(){ 
    return this; 
} 

//getByID() 
public function getByID(required id=""){ 
    return entityLoadByPK("products",'18'); 
} 

} 

productCategories.cfc

component persistent="true" table="productCategories" { 
property name="id" fieldtype="id"; 
property name="description" ormtype="string"; 

property name="products" fieldtype="one-to-many" cfc="products" fkcolumn="categoryid"; 

//init() 
public function init(){ 
    return this; 
} 

public function get(){ 
    return entityload("productCategories"); 
} 

} 

我可以通過設置cfc參數中的完整路徑來通過此錯誤,例如cfc="_model.products",但後來出現以下錯誤。

從表中的產品的關聯是指未映射的類:

氟氯化碳在相同的文件夾中。我曾嘗試重新啓動CF服務器。把我的頭髮拉出來。任何建議非常讚賞。

回答

0

感謝FLepage和CfSimplicity您的建議。

我最終解決了文件夾上的權限問題。我把整個應用程序移動到另一個開發服務器,它工作正常(更多的頭髮拉動)..最終檢查有問題的版本的文件夾的權限,一旦我重置權限,讓所有necassary訪問它工作正常..

我已經將文件從PC複製到Mac,所以當我複製文件/文件夾時,OSX必須對文件夾權限做些事情。不好玩。

再次感謝!

1

每次更換模型時都會重新加載ORM。 檢查對象和關係名稱的所有名稱(區分大小寫)。

檢查「_model」,沒有CFC名稱。

錯誤消息指示未映射的類,因此一個或多個名稱是錯誤的。 或不存在休眠(重新加載是必要的)。

+0

Jlepage。感謝您的回覆。是的,在每個請求上運行ORMReload()。從我所能看到的所有型號名稱都是正確的和相同的情況。不管是否通過路徑引用cfc,我都會得到不同的錯誤。這篇大綱在原文中的結果。再次感謝!! – Jason 2012-03-13 14:11:05

1

嘗試改變的Application.cfc你cfclocation設置到絕對而不是相對路徑:

this.ormEnabled = true; 
this.ormsettings = { 
     cfclocation = ExpandPath("_model") 
};