2016-02-03 3 views
1

Я использую Skipper ORM для разработки/генерировать объекты - все, экспорт в порядке - тогда я:Создание таблицы схемы из сущностей

app/console doctrine:database:drop --force 
app/console doctrine:database:create 
app/console doctrine:schema:update --force 
app/console doctrine:generate:entities --no-backup MyNamespace/MyBundle 

Я получаю сообщение об ошибке/исключение:

[Учение \ DBAL \ Schema \ SchemaException]
В таблице «инвентарь» нет столбца с именем «alternateId».

Что дает? Субъект в вопросе, безусловно, имеет поле:

<?php 
namespace Company\DistributionBundle\Entity; 
use Doctrine\ORM\Mapping AS ORM; 

/** 
* @ORM\Entity(repositoryClass="Company\DistributionBundle\Repository\InventoryRepository") 
* @ORM\Table(
*  name="inventory", 
*  indexes={@ORM\Index(name="ALTID", columns={"alternateId"})}, 
*  uniqueConstraints={ 
*   @ORM\UniqueConstraint(name="PKID", columns={"id"}), 
*   @ORM\UniqueConstraint(name="FINDID", columns={"partNumber","partDescription"}) 
*  } 
*) 
*/ 
class Inventory 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(type="integer", nullable=false) 
    */ 
    private $alternateId; 

    /** 
    * @ORM\Column(type="integer", nullable=false) 
    */ 
    private $unitOftMeasure; 

    /** 
    * @ORM\Column(type="integer", nullable=false) 
    */ 
    private $minimumQuantity; 

    /** 
    * @ORM\Column(type="integer", nullable=false) 
    */ 
    private $maximumQuantity; 

    /** 
    * @ORM\Column(type="decimal", nullable=false) 
    */ 
    private $maximumCycles; 

    /** 
    * @ORM\Column(type="decimal", nullable=false, precision=10, scale=4) 
    */ 
    private $maximumTime; 

    /** 
    * @ORM\Column(type="decimal", nullable=false, precision=10, scale=2) 
    */ 
    private $listPrice; 

    /** 
    * @ORM\Column(type="date", nullable=false) 
    */ 
    private $datePrice; 

    /** 
    * @ORM\Column(type="string", length=50, nullable=false) 
    */ 
    private $partNumber; 

    /** 
    * @ORM\Column(type="string", length=50, nullable=false) 
    */ 
    private $partDescription; 

    /** 
    * @ORM\Column(type="text", length=255, nullable=true) 
    */ 
    private $partNotes; 

    /** 
    * @ORM\OneToOne(targetEntity="Company\DistributionBundle\Entity\Application", inversedBy="inventory") 
    * @ORM\JoinColumn(name="application_id", referencedColumnName="id", nullable=false, unique=true) 
    */ 
    private $application; 

    /** 
    * @ORM\OneToOne(targetEntity="Company\DistributionBundle\Entity\Category", inversedBy="inventory") 
    * @ORM\JoinColumn(name="category_id", referencedColumnName="id", nullable=false, unique=true) 
    */ 
    private $category; 

    /** 
    * @ORM\OneToOne(targetEntity="Company\DistributionBundle\Entity\Manufacturer", inversedBy="inventory") 
    * @ORM\JoinColumn(name="manufacturer_id", referencedColumnName="id", nullable=false, unique=true) 
    */ 
    private $manufacturer; 

    /** 
    * @ORM\ManyToMany(targetEntity="Company\DistributionBundle\Entity\InventoryOptions", mappedBy="inventory") 
    */ 
    private $inventoryOptions; 
} 
+0

Когда я бросаю указатели на инвентарь, похоже, что работает?!? –

ответ

1

Попробуйте использовать doctrine migrations bundle по двум причинам:

  1. Это помогает вам управлять вашей производственной базы данных и все его версии. Вы можете проверить любую версию в любое время
  2. It Красиво создает «sql migrations» для вас. Что вы можете использовать для (запуска миграции) для внесения изменений в базу данных.

Кроме того, он понимает ваши сущности, читает аннотации и создает необходимые файлы.

Идите и исследуйте его.

+0

Я начну с миграции вскоре ... проблема была связана с именами таблиц, имеющих знак подчеркивания вместо camelcase ... явным образом назвав столбцы решенными проблемами. –

Смежные вопросы