2013-02-27 4 views
7

Я относительно новичок в Symfony2 и до сих пор люблю его - за исключением этой проблемы, с которой я все время сталкиваюсь.Symfony2 Доктрина доктрины: генерировать: сущности никогда не работают

Страшные (для меня): доктрина: генерировать: субъекты

Когда я начал свой первый проект Symfony2 я не мог получить эту команду работать и в конечном итоге только с помощью доктрины: генерировать: сущности, вместо которой работала отлично.

Однако на этот раз я пытаюсь написать приложение для системы, которая уже имеет таблицы базы данных. Я следовал инструкциям по адресу: Symfony2 Docs, который, казалось, все отлично работал, за исключением, как обычно, для доктрины: генерировать: сущности бит.

У меня есть следующий Entity файл @ My/Bundle/FeedManagerBundle/Entity/Feeds.php

<?php 

namespace My\Bundle\FeedManagerBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Feeds 
* 
* @ORM\Table(name="feeds") 
* @ORM\Entity 
*/ 
class Feeds 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="feed_label", type="string", length=100, nullable=false) 
    */ 
    private $feedLabel; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="advertiser_id", type="integer", nullable=false) 
    */ 
    private $advertiserId; 

    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="active", type="boolean", nullable=false) 
    */ 
    private $active; 


} 

И в моем/Bundle/FeedManagerBundle/Resources/Config/доктриной/Feeds.orm.yml

Feeds: 
    type: entity 
    table: feeds 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
      strategy: IDENTITY 
    feedLabel: 
     type: string 
     length: 100 
     fixed: false 
     nullable: false 
     column: feed_label 
    advertiserId: 
     type: integer 
     unsigned: false 
     nullable: false 
     column: advertiser_id 
    active: 
     type: boolean 
     nullable: false 
    lifecycleCallbacks: { } 

И это ошибка я получаю:

$ php app/console doctrine:generate:entities My/Bundle/FeedManagerBundle/Entity/Feeds --path=src 
Generating entity "My\Bundle\FeedManagerBundle\Entity\Feeds" 



    [Doctrine\Common\Persistence\Mapping\MappingException]                   
    Invalid mapping file 'My.Bundle.FeedManagerBundle.Entity.Feeds.orm.yml' for class 'My\Bundle\FeedManagerBundle\Entity\Feeds'. 



doctrine:generate:entities [--path="..."] [--no-backup] name 

Я попытался изменить имя файла для YML полный путь. Я также попытался изменить первую строку файла yml на полный путь, и я попытался сделать обе эти вещи одновременно. Ничто, кажется, не работает & сейчас я получаю, чтобы вытащить свою сцену из волос. Может ли кто-нибудь подумать о какой-либо причине, почему это может не работать?

ответ

13

Изменить Feed.orm.yml на:

My\Bundle\FeedManagerBundle\Entity\Feeds: 
    type: entity 
    table: feeds 
    ... 
+0

Вау - я пробовал все, кроме этого. Я даже попробовал My/Bundle/FeedManagerBundle/Entity/Feeds: СПАСИБО! – someuser

+0

@l_t рада, что проблема решена – seferov

+0

То же самое с моим сопоставлением файлов XML. У меня было и он выдавал ту же ошибку. Я изменил его на , и он сработал. Благодаря! – a4bike

1

У меня была такая же проблема, но проблема не была там.

На самом деле, я хотел бы изменить имя объекта, то есть: My \ Bundle \ FeedManagerBundle \ Entity \ Aircaft: должен был быть мой \ Bundle \ FeedManagerBundle \ Entity \ Aircraft:

(поскольку стол был «aircaft»: -S)

но я не изменил имя файла. когда я меняю aircaft.orm.yml to airc r aft.orm.yml (с «r») команда работает !!

0

Я решил эту проблему по-разному. orm.yml файл объекта Feeds создает проблему, поэтому я удалил его с resource -> config -> doctrine, затем я запустил приложение/консоль php doctrine:generate:entities YourBundleName.

Это работает.

Если вы хотите преобразовать информацию сопоставления в другие поддерживаемые форматы отображения, используя задачу doctrine:mapping:convert. Замените ниже пространство имен своим. Он работает на 100%.

php app/console doctrine:mapping:convert --namespace="Blogger\BlogBundle\Entity\Blog" yaml src/Blogger/BlogBundle/Resources/config/doctrine 
1

Ответ обнаружил не было после того, как поиск в течение 5 часов ...

для генерации объектов из YML в model.php, просто сделать это. Фокус на жирный текст ниже. Команда:

php app/console doctrine:generate:entities YourAppBundle:ReplaceWithEntityName --path src/ 

убедитесь, что файл model.orm.yml находится в папке

C: \ хуг \ абв ** AppBundle \ Resources \ Config \ доктриной ** и ваш файл имеет YML эта ссылка в кавычках, добавленных в начале кода сопоставления «AppBundle \ Entity \ Book:»