news と news_category の 2 つのテーブルがあります。そのために、symfony コマンド「doctrine:mapping:convert」を使用して 2 つのマッピング クラスを作成しました。2つのファイルは次のとおりです。
- news.orm.yml. - News: type: entity table: news fields: newsId: id: true type: integer unsigned: false nullable: false column: news_id generator: strategy: IDENTITY newsTitle: type: string length: 255 fixed: false nullable: false column: news_title newsDescription: type: text nullable: false column: news_description newsStatus: type: string length: 255 fixed: false nullable: false column: news_status createdAt: type: date nullable: false column: created_at manyToOne: category: targetEntity: NewsCategory cascade: { } mappedBy: null inversedBy: null joinColumns: category_id: referencedColumnName: category_id orphanRemoval: false lifecycleCallbacks: { }
2)。NewCategory.orm.yml
NewsCategory:
type: entity
table: news_category
fields:
    categoryId:
        id: true
        type: integer
        unsigned: false
        nullable: false
        column: category_id
        generator:
            strategy: IDENTITY
    categoryTitle:
        type: string
        length: 255
        fixed: false
        nullable: false
        column: category_title
    categoryDescription:
        type: text
        nullable: false
        column: category_description
lifecycleCallbacks: {  }
その後、これを使用して別のsymfonyコマンド「doctrine:mapping:import」を使用しました。エンティティフォルダーNews.phpとNewsCategory.phpに2つのファイルを再度生成しました
これは次のとおりです。
1) ニュース.php
<?php
  namespace Admin\NewsBundle\Entity;
  use Doctrine\ORM\Mapping as ORM;
 /**
  * News
  *
  * @ORM\Table(name="news")
  * @ORM\Entity
  */
  class News
 {
/**
 * @var integer
 *
 * @ORM\Column(name="news_id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $newsId;
/**
 * @var string
 *
 * @ORM\Column(name="news_title", type="string", length=255, nullable=false)
 */
private $newsTitle;
/**
 * @var string
 *
 * @ORM\Column(name="news_description", type="text", nullable=false)
 */
private $newsDescription;
/**
 * @var string
 *
 * @ORM\Column(name="news_status", type="string", length=255, nullable=false)
 */
private $newsStatus;
/**
 * @var \DateTime
 *
 * @ORM\Column(name="created_at", type="date", nullable=false)
 */
private $createdAt;
/**
 * @var \NewsCategory
 *
 * @ORM\ManyToOne(targetEntity="NewsCategory")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="category_id", referencedColumnName="category_id")
 * })
 */
private $category;
}
そして、2) NewCategory.php
namespace Admin\NewsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * NewsCategory
 *
 * @ORM\Table(name="news_category")
 * @ORM\Entity
 */
class NewsCategory
{
/**
 * @var integer
 *
 * @ORM\Column(name="category_id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $categoryId;
/**
 * @var string
 *
 * @ORM\Column(name="category_title", type="string", length=255, nullable=false)
 */
private $categoryTitle;
/**
 * @var string
 *
 * @ORM\Column(name="category_description", type="text", nullable=false)
 */
private $categoryDescription;
}
問題は、「doctrine:generate:entities」を使用してエンティティを作成しているときに、次のエラーが発生することです。
D:\wamp\www\Symfony>php app/console doctrine:generate:entities AdminNewsBundle
Generating entities for bundle "AdminNewsBundle"
  [Doctrine\Common\Persistence\Mapping\MappingException]
  Invalid mapping file 'Admin.NewsBundle.Entity.News.orm.yml' for class 'Admi
  n\NewsBundle\Entity\News'.
 doctrine:generate:entities [--path="..."] [--no-backup] name
英語が下手で申し訳ありませんが、私はsymfony2を初めて使用するので、この問題から抜け出すのを手伝ってください