0

嗨,大家好,我已经在Page CRUD中集成了一个用stofdoctrinebundle和vichuploaderbundle上传的子弹和图片上传。symfony2迁移包拒绝迁移

这里是实体:

namespace George\PageBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use George\UserBundle\Entity\User; 
use Gedmo\Mapping\Annotation as Gedmo; 
use Symfony\Component\HttpFoundation\File\File; 
use Vich\UploaderBundle\Mapping\Annotation as Vich; 

/** 
* Page 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="George\PageBundle\Entity\PageRepository") 
* @Vich\Uploadable 
*/ 
class Page 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* 
* @ORM\Column(name="title", type="text") 
*/ 
private $title; 

/** 
* @var string 
* 
* @ORM\Column(name="content", type="text") 
*/ 
private $content; 

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

/** 
* @var \DateTime 
* 
* @ORM\Column(name="created", type="datetime") 
*/ 
private $created; 

/** 
* @var \DateTime 
* 
* @ORM\Column(name="modefied", type="datetime") 
*/ 
private $modefied; 

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

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

/** 
* @ORM\ManyToOne(targetEntity="George\UserBundle\Entity\User", inversedBy="pages") 
* @ORM\JoinColumn(onDelete="CASCADE") 
*/ 
private $owner; 

//@ORM\Column(length=128, unique=true) 
/** 
* @Gedmo\Slug(fields={"title"}) 
* @ORM\Column(length=128, unique=true) 
*/ 
private $slug; 

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

/** 
* Set title 
* 
* @param string $title 
* 
* @return Page 
*/ 
public function setTitle($title) 
{ 
    $this->title = $title; 

    return $this; 
} 

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

/** 
* Set content 
* 
* @param string $content 
* 
* @return Page 
*/ 
public function setContent($content) 
{ 
    $this->content = $content; 

    return $this; 
} 

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

/** 
* Set visible 
* 
* @param boolean $visible 
* 
* @return Page 
*/ 
public function setVisible($visible) 
{ 
    $this->visible = $visible; 

    return $this; 
} 

/** 
* Get visible 
* 
* @return boolean 
*/ 
public function getVisible() 
{ 
    return $this->visible; 
} 

/** 
* Set created 
* 
* @param \DateTime $created 
* 
* @return Page 
*/ 
public function setCreated($created) 
{ 
    $this->created = $created; 

    return $this; 
} 

/** 
* Get created 
* 
* @return \DateTime 
*/ 
public function getCreated() 
{ 
    return $this->created; 
} 

/** 
* Set modefied 
* 
* @param \DateTime $modefied 
* 
* @return Page 
*/ 
public function setModefied($modefied) 
{ 
    $this->modefied = $modefied; 

    return $this; 
} 

/** 
* Get modefied 
* 
* @return \DateTime 
*/ 
public function getModefied() 
{ 
    return $this->modefied; 
} 

/** 
* Set description 
* 
* @param string $description 
* 
* @return Page 
*/ 
public function setDescription($description) 
{ 
    $this->description = $description; 

    return $this; 
} 

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

/** 
* Set keywords 
* 
* @param string $keywords 
* 
* @return Page 
*/ 
public function setKeywords($keywords) 
{ 
    $this->keywords = $keywords; 

    return $this; 
} 

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

/** 
* @return mixed 
*/ 
public function getOwner() 
{ 
    return $this->owner; 
} 

/** 
* @param mixed $owner 
*/ 
public function setOwner(User $owner) 
{ 
    $this->owner = $owner; 
} 

public function getSlug() 
{ 
    return $this->slug; 
} 

// ..... other fields 


/** 
* NOTE: This is not a mapped field of entity metadata, just a simple property. 
* 
* @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName") 
* 
* @var File 
*/ 
private $imageFile; 

/** 
* @ORM\Column(type="string", length=255) 
* 
* @var string 
*/ 
private $imageName; 

/** 
* @ORM\Column(type="datetime") 
* 
* @var \DateTime 
*/ 
private $updatedAt; 

/** 
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance 
* of 'UploadedFile' is injected into this setter to trigger the update. If this 
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter 
* must be able to accept an instance of 'File' as the bundle will inject one here 
* during Doctrine hydration. 
* 
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image 
*/ 
public function setImageFile(File $image = null) 
{ 
    $this->imageFile = $image; 

    if ($image) { 
     // It is required that at least one field changes if you are using doctrine 
     // otherwise the event listeners won't be called and the file is lost 
     $this->updatedAt = new \DateTime('now'); 
    } 
} 

/** 
* @return File 
*/ 
public function getImageFile() 
{ 
    return $this->imageFile; 
} 

/** 
* @param string $imageName 
*/ 
public function setImageName($imageName) 
{ 
    $this->imageName = $imageName; 
} 

/** 
* @return string 
*/ 
public function getImageName() 
{ 
    return $this->imageName; 
} 
} 

当我尝试教义迁移migrationbundle它特罗错误“语法错误或访问冲突:1061重复键的名字......”

在数据库中,我已经在这唯一索引:

enter image description here

我不明白为什么迁移希望将其在补充的是alrea在那里。

+1

第一:您的实体是否正确映射? 'php app/console doctrine:schema:validate' – scoolnico

+1

您可以随时编辑迁移文件并删除创建的索引 –

+0

@scoolnico是正确映射的。 –

回答

0

当您创建迁移时,请记住,当您生成两个或更多迁移时,您将通过其中两个进行迁移,并且当其中一个迁移的更改重复时,您需要将其从迁移中移除以向前移动。