删除数据库删除symfony2上的图像

时间:2013-11-15 20:32:46

标签: symfony doctrine-orm

Symfony Forms

我这一切都正常工作。我不确定的一件事是,当删除数据库中的相关条目时,如何删除上传文件夹中上传的图像。

我真的只需要知道怎样做才能朝着正确的方向前进。

提前致谢。

3 个答案:

答案 0 :(得分:1)

你是对的我在实体中的代码上做了一个var转储......

 /**
 * @ORM\PostRemove
 */
public function removeUpload()
{
    if(file_exists($file)) {
        if ($file = $this->getAbsolutePath()) {
            unlink($file);
        }
    }    
}

如果文件存在,$ file显示一个空变量。在上传中,它将变量保存为$ logo

我将代码更改为以下

 /**
 * @ORM\PostRemove
 */
public function removeUpload() {
     // ** Original Code used file but logo has the name in it.

     if(file_exists($this->getAbsolutePath())) {
         if ($this->getUploadRootDir() . $this->logo = $this->getAbsolutePath()) {
            unlink($this->logo);
        }
    } 
}

现在可以正确删除文件。谢谢你们俩。

答案 1 :(得分:0)

在删除操作中,您必须手动删除该文件。我假设您将文件路径存储在数据库中,因此这应该相对容易。

$path = ....//query db to get the path to the file
if($path){
    unlink($path);
}

//now you can delete the record in the database

请参阅php docs删除文件

答案 2 :(得分:0)

您可能正在搜索的是Doctrine2 Lifecycles。只需向您的实体添加方法:

/**
 * @ORM\PreRemove
 */
public function deleteImage()
{
    // unlink your image and what not.
}

另外,请不要忘记实体类的@ORM\HasLifecycleCallbacks()注释。