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

當您創建遷移時,請記住,當您生成兩個或更多遷移時,您將通過其中兩個進行遷移,並且當其中一個遷移的更改重複時,您需要將其從遷移中移除以向前移動。