2016-03-19 50 views
-1

這可能是一個新手問題,在Symfony的文檔中找不到它。我已經根據文檔安裝了Symfony,並使用'database &原則'手冊創建了一個數據庫。之後,我使用該原則創建了一個實體。當我這樣做時,我注意到沒有創建的註釋。作爲捆綁我用的appbundle這也是我AppKernel這樣的:沒有爲創建的實體創建註釋

$bundles = [ 
     new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
     new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
     new Symfony\Bundle\TwigBundle\TwigBundle(), 
     new Symfony\Bundle\MonologBundle\MonologBundle(), 
     new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
     new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
     new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
     new Symfony\Bundle\AsseticBundle\AsseticBundle(), 
     new AppBundle\AppBundle(), 
    ]; 

UPDATE: 使用命令php bin/console doctrine:generate:entity我使用註釋(而不是YML,PHP或XML),使得在此創建的實體富:

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

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

    /** 
    * @var string 
    * 
    * @ORM\Column(name="bar", type="string", length=35) 
    */ 
    private $bar; 


    /** 
    * Get id 
    * 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set bar 
    * 
    * @param string $bar 
    * 
    * @return Foo 
    */ 
    public function setBar($bar) 
    { 
     $this->bar = $bar; 

     return $this; 
    } 

    /** 
    * Get bar 
    * 
    * @return string 
    */ 
    public function getBar() 
    { 
     return $this->bar; 
    } 
} 

所以它也產生了註釋,但我仍然無法生成我的數據庫架構:(

原來下面的問題是過時 我必須手動輸入我的註釋的原因是什麼?

親切的問候,

皮姆

回答

0

好吧,我想你錯過理解數據庫是如何與Doctriine創建。

實體類(在src/AppBundle/Entity/中)定義了映射的實體,

這個類有屬性(又名變量),它們表示列(或關聯)。這個屬性必須註明,以便教義知道要創建什麼樣的列。

現在這些類可以完全由使用下面的命令生成手構造:

php app/console generate:doctrine:entity 

但是你要明白這只是一個快捷方式 - 你仍然負責維護和發展架構。

因此,要回答你的問題:

什麼是我必須手動輸入我的註釋的原因是什麼?

因爲教義不知道要保存什麼樣的數據 - 註釋是一種讓你解釋教義(和symfony中),你需要什麼。

不要忘記運行doctrine:schema:create來實際創建實體中描述的表。

+0

Oke,對我來說很明顯,實體是對象,並且它們引用數據庫中的表。而且的確,這些屬性是各自表格中的列。到目前爲止,我同意你的看法。我認爲如果教義也生成類(實體),爲什麼它不生成它也是註釋。我覺得變得懶惰哈哈 – PimD1988

+0

Mhh由於某種原因,它也不會創建我的數據庫模式。當我執行該命令時,它只返回'沒有元數據類來處理'...我真的不知道我的設置有什麼問題。根據手冊http://symfony.com/doc/current/book/doctrine.html – PimD1988

+0

我已經完成了所有工作當使用該命令來生成實體時......您是使用「使用註釋」還是選擇了其中一個其他選項(如yml)。另外,你是否添加了任何字段? 你可以添加整個實體類到你的queston嗎? – Putr

0

奧克,我想通了這個問題。

使用交互式手冊我忽略了'選項'註釋。那是我犯的第一個錯誤。

我犯的第二個錯誤是我在AppBundle中創建實體。當我創建我自己的捆綁包時,它的所有工作都完美無缺:)