我已經在運行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;
}
}
通常,這種錯誤與您在類或名稱空間的開始處使用「\」相關,當您肩膀或不使用它時你應該。如果你粘貼隱含類的代碼,我可以將它刪除 –
@CarlosRobles我已更新我的問題,謝謝。 – MGP
另外,把App \ Common \ Model \ Repository \ Settings和'\ Etc \ App \ Entity \ User'的代碼放在那些可訪問的類中?它們是否正確設置了名稱空間?我會說這是存儲庫 –