2016-01-27 2 views
0

Я хочу загрузить и сохранить оба файла: документ и изображение обложки документа в моей БД. Но есть только столбец файлов. Второе изображение не внутри.vich upload bundle - изображение и фотография в одном объекте - Документ хранится только в DB

Это как мой класс сущностей выглядит следующим образом:

class Document 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="document_title", type="string", length=255) 
    */ 
    private $documentTitle; 

    /** 
    * @ORM\Column(type="string", length=255) 
    * @var string 
    */ 
    private $fileName; 
    /** 
    *@Vich\UploadableField(mapping="user_documents", fileNameProperty="fileName") 
    * @var File 
    */ 
    private $documentFile; 
    /* 
    * @ORM\Column(type="string", length=255) 
    * @var string 
    */ 
    private $coverName; 
    /** 
    *@Vich\UploadableField(mapping="documents_covers", fileNameProperty="coverName") 
    * @var File 
    */ 
    private $documentCover; 

    /** 
    * @ORM\ManyToOne(targetEntity="Foo\UserBundle\Entity\User", inversedBy="documents") 
    **/ 
    private $owner; 
} 

Вот как мои сеттера выглядят следующим образом:

public function setDocumentFile(File $documentFile = null) 
{ 
    $this->documentFile = $documentFile; 
    if ($documentFile){ 
     $this->updatedAt = new \DateTime('now'); 
    } 
    return $this; 
} 

/** 
* @param File $documentCover 
*/ 
public function setDocumentCover(File $documentCover = null) 
{ 
    $this->documentCover = $documentCover; 
} 

И мой вич загрузчик конфигурация:

vich_uploader: 
    db_driver: orm 
    storage: file_system 
    mappings: 
     documents_covers: 
      uri_prefix: %app.path.documents_covers% 
      upload_destination: %kernel.root_dir%/../web/uploads/images/documents 
      namer: vich_uploader.namer_uniqid 
     user_documents: 
      uri_prefix: %app.path.user_documents% 
      upload_destination: %kernel.root_dir%/../web/uploads/files/user/documents 
      namer: vich_uploader.namer_uniqid 

Когда я смотрю там есть директории, файлы существуют, но когда я смотрю в БД, есть только $ documentFile. Document table data

ответ

0

Кажется, вы должны обновить схему своей базы данных. Вы можете использовать эту команду:

php app/console doctrine:schema:update --force 

Но если у вас есть производственная среда, это не является хорошим способом, чтобы обновить схему базы данных. В этом случае вы должны создать migration.

Также я предлагаю реализовать свой setDocumentCover setter, чтобы избежать ошибки сохранения файла в случае обновления только одного поля (documentCover) в вашей организации.

public function setDocumentCover(File $documentCover = null) 
{ 
    $this->documentCover = $documentCover; 
    if ($documentCover){ 
     $this->updatedAt = new \DateTime('now'); 
    } 
    return $this; 
} 
0

похоже, что поле $coverName неверно определено. Это должно быть так (обратите внимание, как объявлен док-блок):

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