2010-09-28 28 views
1

當我想訪問用戶定義的模型的函數CI中的自定義用戶定義的庫內側它拋出如何訪問CodeIgniter用戶定義的模型?

呼叫到非對象的成員函數Set_where()

雖然我利用這一點,庫

$CI =& get_instance(); 

$CI->load->model('home_model'); 

裏面加載模型而我使用此代碼來訪問內部home_model類功能

$CI->home_model->Set_where("film_feature='Y'"); 

所以現在它會拋出上述錯誤。

那麼有人可以幫我解決這個錯誤嗎?

+0

在OP代碼中看不到任何錯誤。需要查看film_feature功能代碼 – Ross 2010-09-28 08:13:25

+0

這裏Set_where是home_model的函數 – pravat231 2010-09-28 12:51:36

+0

您可以調用此模型中的任何其他函數嗎?你可以加載任何其他模型?一切拼寫正確的文件名和類聲明?當你給我們的是上面的代碼時,很難提供幫助。 – treeface 2010-09-28 17:09:05

回答

0

現在我解決了這個問題,只是增加$ CI = & get_instance();進入那個我以前想要獲取的函數中,我聲明$ CI = & get_instance();在那個它沒有實例化的類的另一個函數中。

我的工作代碼是現在..

$ CI = & get_instance();

$ CI-> load-> model('home_model');

$ CI-> home_model-> Set_where(「film_feature ='Y'」);

+0

如果您在初始文章中描述性更強,我們可以幫助您解決問題。這聽起來像你不太瞭解PHP類的變量範圍。欲瞭解更多信息,請參閱:http://www.tuxradar。com/practicalphp/6/0/0 – treeface 2010-09-28 19:32:28

+0

在這種情況下,我是一個新手,這就是爲什麼我需要一些時間來解決它,但新手thanx爲你快速響應。 – pravat231 2010-09-29 04:52:22

1

你可以嘗試實例化模型對象,如:

include_once('path/modelname.php'); 
$home_model = new Home_model(); 
$home_model->set_where(....); 

確保你的模型擴展德默認CI模型類。您還可以使用$ CI-> load-> model(modelname);您可以使用$ CI-> load-> model(modelname);或者使用$ CI-> load-> model(modelname);使用$ CI-> load-> model而不是包含......處理路徑問題更容易,但效率稍低一些,因爲load-> model會實例化一個對象。

+1

讓我知道它是否有效 – 2010-09-28 17:51:32

+0

正如我在另一篇文章中提到的那樣,這是一個重複的東西,pravat231在做什麼並沒有什麼內在的錯誤,所以沒有進一步的信息就不可能確定什麼是錯的。我認爲使用CI的本地加載器庫的include語句是不必要的,如果pravat的一切正確。這個錯誤不是加載函數的問題,但可能是他沒有發佈的代碼中的某處。 – treeface 2010-09-28 18:03:40

+0

另外,如果您使用CI,則無論您是否自動加載,加載器類都會自動實例化。這發生在基本Controller類的第82行:$ this-> load =&load_class('Loader'); – treeface 2010-09-28 18:11:18

相關問題