2012-02-22 57 views
1

根據 Doctrine cookbook的說明,我已經使用CodeIgniter 2.1和Doctrine 2.2建立了一個項目。 EntityManager的工作,但是當我嘗試加載實體模型,它 給了我錯誤在Doctrine 2.2 + CodeIgniter中找不到類模型2.1

Fatal error: Class 'Users' not found in /Volumes/Data/Projects/myproject/application/controllers/home.php on line 10 

這是我home.php文件:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

//require_once(APPPATH.'models/Users.php'); 

class Home extends CI_Controller { 
    public function index() 
    { 
    $em = $this->doctrine->em; 
    $users = new Users;  
    //$user = $em->find("Users", 1); 
    $em->flush(); // dummy 
    $this->load->view('welcome_message'); 
    } 
} 

如果我取消註釋行3:require_once(APPPATH.'models/Users.php');,然後 它完美地工作。

如何使模型自動加載?

自動加載機制是由庫/ Doctrine.php中的bootstrap處理的,不是嗎?

$entitiesClassLoader = new ClassLoader('models', rtrim(APPPATH, "/")); 
    $entitiesClassLoader->register(); 

請大家給我洞察這個問題。

回答

0

我從來沒有與CI和學說的工作所以不知道是否應該學說加載模型或它加載它們,但你應該嘗試做yourselft,不與包括但這種方式:

在控制器中: $ this-> load-> model('Users');

或作爲應用程序/配置/ autoload.php中的自動加載並加載數組中的模型。

1

我猜你的Users.php文件裏面有一個命名空間行?

如果是這樣,那麼您將需要爲您的控制器代碼添加一個「use」語句,以便php命名空間系統知道在哪裏查找您的實體。

如果沒有,則驗證您的entitiesClassLoader實際上是否被調用,並且APPPATH具有預期值。