2016-03-19 39 views
-1

これは初心者向けの質問であり、Symfonyのドキュメントでは見つかりませんでした。私はsymfonyをドキュメントにしたがってインストールし、 'database & doctrine'マニュアルを使用してデータベースを作成しました。その後、私は教義を使ってエンティティを作成しました。私がそれをしたとき、私はどこに注釈もついていないことに気づいた。作成されたエンティティに注釈が作成されていません

$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:バンドルとして、私はこのように私のAppKernelでもあるAppBundle使用 コマンドを使用しphp bin/console doctrine:generate:entity私はこれが生じた(代わりにYML、PHPやXMLの)アノテーションを使ってエンティティのFooを作成しました:

<?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

[OK]を、私はあなたがデータベースがDoctriineを使用して作成されている方法を理解ミスだと思います。

エンティティクラス(src/AppBundle/Entity/)は、テーブルにマッピングされるエンティティを定義します。

このクラスには、列(または関連)を表す(別名変数)のプロパティがあります。 doctrineが作成する列の種類を知るように、このプロパティに注釈を付ける必要があります。

は今、これらのクラスは、手または以下のコマンドで生成されたによって完全に構築することができます。

php app/console generate:doctrine:entity 

しかし、あなたは、これはただのショートカットであることを理解する必要があります - あなたはまだ維持し、開発する責任がありますスキーマ

だからあなたの質問に答えるために:

私は手動で私の注釈を入力する必要が理由は何ですか?

教義は、保存したいデータの種類を知ることができないので - 注釈をための方法ですあなた教義(とsymfony)にを説明するために、あなたが必要なもの。

doctrine:schema:createを実行して、エンティティに記述されたテーブルを実際に作成することを忘れないでください。

+0

私は、エンティティがオブジェクトであり、データベース内のテーブルを参照していることは間違いありません。そして確かにプロパティはそれぞれのテーブルの列です。これまで私はあなたに同意します。私は、doctrineがクラス(エンティティ)を生成して、アノテーションも生成しないのであれば、それをよく考えました。 – PimD1988

+0

何かの理由で私のdbスキーマも作成されていないのが嬉しいです。私はそのコマンドを実行すると、 '処理するメタデータクラスがありません'という結果が返されます...セットアップに何が間違っているのかは分かりません。私はマニュアルに従ってすべてを行ったhttp://symfony.com/doc/current/book/doctrine.html – PimD1988

+0

コマンドを使用してエンティティを生成するときは... "注釈を使用する"を使用しましたか?他のオプション(ymlなど)また、フィールドを追加しましたか? エンティティクラス全体をクエストオンに追加できますか? – Putr

0

おっと、私は問題を理解しました。

私は対話型マニュアルを使って、「オプション」の注釈を見落としました。それが私が作った最初のミスでした。

私が作った2番目の間違いは、AppBundleのビルドでエンティティを作成していたことです。私自身のBundleを作成したとき、それはすべて完璧に機能しました:)

関連する問題