2014-02-12 24 views
0

我已經在運行IIS的Windows Server中安裝了一個使用ZendFramework和Doctrine 2完成的小型應用程序。在鏈式命名空間中找不到的類

的應用程序,運行在linux下正常,但在我的Windows機器,我得到以下錯誤:

An error occurred during execution; please try again later. 

Doctrine\Common\Persistence\Mapping\MappingException 

C:\inetpub\wwwroot\system\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\MappingException.php:38 
The class '' was not found in the chain configured namespaces App\Common\Entity 
#0 C:\inetpub\wwwroot\system\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain.php(114): Doctrine\Common\Persistence\Mapping\MappingException::classNotFoundInNamespaces(false, Array) 
#1 C:\inetpub\wwwroot\system\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php(113): Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass(false, Object(Doctrine\ORM\Mapping\ClassMetadata)) 
#2 C:\inetpub\wwwroot\system\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(302): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array) 
#3 C:\inetpub\wwwroot\system\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(205): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('App\Common\Enti...') 
#4 C:\inetpub\wwwroot\system\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(268): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('App\Common\Enti...') 
#5 C:\inetpub\wwwroot\system\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(682): Doctrine\ORM\EntityManager->getClassMetadata('App\Common\Enti...') 
#6 C:\inetpub\wwwroot\system\modules\App\Main\src\App\Main\Controller\IndexController.php(24): Doctrine\ORM\EntityManager->getRepository('App\Common\Enti...') 
#7 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(83): App\Main\Controller\IndexController->indexAction() 
#8 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) 
#9 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 
#10 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 
#11 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 
#12 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response)) 
#13 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) 
#14 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) 
#15 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 
#16 C:\inetpub\wwwroot\system\vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(309): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) 
#17 C:\inetpub\wwwroot\index.php(25): Zend\Mvc\Application->run() 
#18 {main} 

怪異的一部分是,在錯誤..類名是空的。 什麼可能是?

- UPDATE

所以,這就是我所說的

$this->getEntityManager()->getRepository('App\Common\Entity\Setting');

而且我的實體:

namespace App\Common\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity(repositoryClass="App\Common\Model\Repository\Settings") 
* @ORM\Table(name="settings") 
* @ORM\HasLifecycleCallbacks 
*/ 
class Setting { 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", nullable=false); 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="\Etc\App\Entity\User") 
    * @ORM\JoinColumn(name="author", referencedColumnName="id", onDelete="SET NULL") 
    */ 
    protected $author; 

    public function getId() { 
     return $this->id; 
    } 

    public function setId($id) { 
     $this->id = $id; 
    } 

    public function getAuthor() { 
     return $this->author; 
    } 

    public function setAuthor(\Etc\App\Entity\User $author) { 
     $this->author = $author; 
    } 

} 

- 更新2

namespace App\Common\Model\Repository; 

class Settings { 

    public function findAllFlatten() { 
     // nothing relevant here.. 
    } 

} 



namespace Etc\App\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* @ORM\Entity(repositoryClass="Etc\App\Model\Repository\User") 
* @ORM\Table(name="user") 
* @ORM\HasLifecycleCallbacks 
*/ 
class User { 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", nullable=false); 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=48, unique=true, nullable=false) 
    */ 
    protected $username; 

    /** 
    * @ORM\Column(type="string", length=64, nullable=false) 
    */ 
    protected $password; 

    public function getId() { 
     return $this->id; 
    } 

    public function setId($id) { 
     $this->id = $id; 
    } 

    public function getUsername() { 
     return $this->username; 
    } 

    public function setUsername($username) { 
     $this->username = $username; 
    } 

    public function getPassword() { 
     return $this->password; 
    } 

    public function setPassword($password) { 
     $this->password = $password; 
    } 

} 
+0

通常,這種錯誤與您在類或名稱空間的開始處使用「\」相關,當您肩膀或不使用它時你應該。如果你粘貼隱含類的代碼,我可以將它刪除 –

+0

@CarlosRobles我已更新我的問題,謝謝。 – MGP

+0

另外,把App \ Common \ Model \ Repository \ Settings和'\ Etc \ App \ Entity \ User'的代碼放在那些可訪問的類中?它們是否正確設置了名稱空間?我會說這是存儲庫 –

回答

0

一切看起來很正常,但唯一可以看到的是您的存儲庫不會擴展任何內容。它應該擴展學說倉儲類:

<? 
    namespace App\Common\Model\Repository; 

    use Doctrine\ORM\EntityRepository; 

    class Settings extends EntityRepository { 
     /// ... 

    } 

此外,你已經配置了所有的命名空間?請記住,在配置文件中,您有配置文件,例如:

'doctrine' => array (
       'driver' => array (
         'mi_driver' => array (
           'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
           'cache' => 'array', 
           'paths' => array (
             __DIR__ . '/PATH_TO_CLASS_FILES' 
           ) 
         ), 


         'orm_default' => array (
           'drivers' => array (
             "NAMESPACE"=>"mi_driver", "NAMESPACE2"=>"mi_driver", 

           ) 
         ) 
       ) 
     ) 
); 

並且還檢查自動裝帶器是否正確配置。嘗試它只是在您的代碼中的任何地方創建類的實例new App\Common\Entity\Setting()

+0

這是,它只是一個編輯錯字,並且我錯誤地刪除了該部分..反正,這可能是服務器問題嗎?如果是這樣,可能是什麼?這真是奇怪.. – MGP

+0

@MGP你可以看看我最近的更新嗎?你找到了解決方案嗎? –

相關問題