2016-07-22 52 views
0

我按照Symfony教程,正在手動爲我的產品實體創建一個存儲庫,而不是使用控制檯創建它。本來註釋是這樣的:在錯誤的地方創建Symfony庫

/** 
* Product 
* 
* @ORM\Table(name="product") 
* @ORM\Entity(repositoryClass="AppBundle\Entity\ProductRepository") 
*/ 

,但因爲我學習使用控制檯創建我試圖改變它,以便它是在正確的位置的實體和存儲庫。控制檯將所有控制檯創建的控制檯放在Repository目錄中。我的產品實體現在看起來像這樣(用手改變):

/** 
* Product 
* 
* @ORM\Table(name="product") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository") 
*/ 

然而,當我發出這個命令

# php bin/console doctrine:generate:entities AppBundle 

OR

# php bin/console doctrine:generate:entities AppBundle/Entity/Product 

庫在實體目錄結束,而不是庫。我已經看過了這個問題,看起來像學說的緩存,但我已經嘗試下面的命令,沒有運氣來清除它:

php bin/console doctrine:cache:clear-metadata 
php bin/console doctrine:cache:clear-query 
php bin/console doctrine:cache:clear-result 

我甚至試圖通過控制檯重新創建實體,但它仍然在文件中創建錯誤的地方。偶爾它會將它放在正確的位置以便刷新一次瀏覽器,但隨後會發現它找不到它(因爲它正在Entity目錄中查找它。)

任何人都可以幫我理清原理嗎?可以充分看到:

<?php 

namespace AppBundle\Entity; //<--- This is one of the issues. See answer 

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

/** 
* Product 
* 
* @ORM\Table(name="product") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository") 
*/ 
class Product 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 
    ... 

folder_structure

回答

0

如果沒有人嘗試過,但沒有發表評論回顧這段,感謝的人誰花時間來看看這個在

答案是愚蠢我的一部分。 。 我創建 該項目是以root身份而不是Web用戶登錄的,因此緩存的元數據文件無法被覆蓋。我發現了這一點,通過運行以下命令:

# php bin/console cache:clear 

,並得到....

[InvalidArgumentException] 
The directory "/path/to/testapp/var/cache/dev/annotations" is not writable. 

(如上修改,以掩蓋真實路徑路徑)。其次,我班的命名空間名稱顯然是錯誤的。它應該是:

namespace AppBundle\Repository; 

無論如何謝謝。