2016-11-02 4 views
0

ファイルをソフト削除しています。今私はソフト削除ファイル 'trashedFile'ディレクトリを移動したい。私のソフト削除が実行されますが、移動先フォルダに移動できません。 My UploadedFileエンティティが下にあります。私のファイルは../uploads/fileに保存されています。ファイルを削除すると、../uploads/file/trashedFilesに移動します。アップロードしたファイルを別のディレクトリに移動

マイコード:

$deleteFile = $this->em-> 
getRepository('AppBundle:UploadedFile\UploadedFile') 
->findOneBy(array('id'=>$id)); 
$this->em->remove($deleteFile); 

$move = $deleteFile-> 
rename('%kernel.root_dir%/../uploads/files/trashedFiles',$name); //This section is my problem??? 

にUploadedFileエンティティ:

/** 
* UploadedFile 
* @Gedmo\SoftDeleteable 
* @ORM\Table(name="uploaded_files") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\UploadedFile\UploadedFileRepository") 
* @Vich\Uploadable 
*/ 
class UploadedFile 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @Vich\UploadableField(mapping="file", fileNameProperty="uniqueName") 
* @var File 
*/ 
private $documentFile; 

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

/** 
* @var int 
* 
* @ORM\Column(name="size", type="integer") 
*/ 
private $size; 

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

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

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

/** 
* @var User 
* 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User") 
*/ 
private $user; 

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

use TimestampableEntity; 

use SoftDeleteableEntity; 

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

/** 
* Set orginalName 
* 
* @param string $orginalName 
* 
* @return UploadedFile 
*/ 
public function setOrginalName($orginalName) 
{ 
    $this->orginalName = $orginalName; 

    return $this; 
} 

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

/** 
* Set size 
* 
* @param integer $size 
* 
* @return UploadedFile 
*/ 
public function setSize($size) 
{ 
    $this->size = $size; 

    return $this; 
} 

/** 
* Get size 
* 
* @return int 
*/ 
public function getSize() 
{ 
    return $this->size; 
} 

/** 
* Set type 
* 
* @param string $type 
* 
* @return UploadedFile 
*/ 
public function setType($type) 
{ 
    $this->type = $type; 

    return $this; 
} 

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

/** 
* Set uniqueName 
* 
* @param string $uniqueName 
* 
* @return UploadedFile 
*/ 
public function setUniqueName($uniqueName) 
{ 
    $this->uniqueName = $uniqueName; 

    return $this; 
} 

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

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

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

/** 
* @return User 
*/ 
public function getUser() 
{ 
    return $this->user; 
} 

/** 
* @param User $user 
*/ 
public function setUser($user) 
{ 
    $this->user = $user; 
} 

/** 
* @return boolean 
*/ 
public function isActive() 
{ 
    return $this->active; 
} 

/** 
* @param boolean $active 
*/ 
public function setActive($active) 
{ 
    $this->active = $active; 
} 

/** 
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $file 
* 
* @return $this 
*/ 
public function setDocumentFile(File $file = null) 
{ 
    $this->documentFile = $file; 

    if ($file) { 
     $this->updatedAt = new \DateTime('now'); 
    } 

    return $this; 
} 

/** 
* @return File|null 
*/ 
public function getDocumentFile() 
{ 
    return $this->documentFile; 
} 

}

+0

どのようなエラーが表示されますか?アップロードパスに '/ web /'がありませんか? –

+0

そしてUploadedFileエンティティを表示してください。そうでなければ、これは難しいです。 –

+0

@johnSmith私はエンティティを追加しました。 – Kerim

答えて

1

エンティティマネージャからインスタンスを削除した後、あなたは文句を言わない、それ

$this->em->remove($deleteFile); // $deleteFile = null 
へのアクセスを持っています

ソフト削除の概念は、実際にはエンティティを削除しない方法ですが、ファイルが削除されたかどうかを表す別のブール値フィールドを追加します。

ロジックを維持したい場合は、まずファイルを別のフォルダに移動し、dbからエンティティを削除します。

希望すると便利です。

関連する問題