Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据库symfony中删除记录_Php_Database_Symfony_Entity - Fatal编程技术网

Php 从数据库symfony中删除记录

Php 从数据库symfony中删除记录,php,database,symfony,entity,Php,Database,Symfony,Entity,我刚刚创建了一个从数据库中删除实体记录的操作。 行动是: public function eliminaricettaAction($id) { $em = $this->getDoctrine()->getManager(); $ricetta = $em->getRepository('AppBundle:Ricette')->find($id); $em->remove($ricetta);

我刚刚创建了一个从数据库中删除实体记录的操作。 行动是:

public function eliminaricettaAction($id)
    {
        $em = $this->getDoctrine()->getManager();
        $ricetta = $em->getRepository('AppBundle:Ricette')->find($id);
        $em->remove($ricetta);
        $em->flush();

        return $this->render('adminarea/gestionericette.html.twig', array(
                    'base_dir' => realpath($this->container->getParameter('kernel.root_dir') . '/..'),
        ));
    }
我得到的错误是:

警告:取消链接():没有这样的文件或目录

所以我认为问题在于实体本身,特别是在这种代码的和平中:

/**
 * @ORM\PreRemove()
 */
public function removeImage()
{
    unlink($this->getFullImagePath());
    rmdir($this->getUploadRootDir());
}

我做错了什么?

您试图删除一个不存在的文件

在尝试删除文件之前,应确保它们存在。确认您确实从
$this->getFullImagePath()
获取了一个文件路径,并且通过使用确认该路径处的文件存在

您可以这样实现它:

public function removeImage()
{
    if($file = $this->getFullImagePath() && file_exists($file)) {
        unlink($file);
        rmdir($this->getUploadRootDir());
    }
}

理想情况下,您还应该检查
$this->getUploadRootDir()
是否返回一个值,以及该目录是否存在且不为空,然后再尝试删除它;但是,您也可以考虑是否每次删除文件时都需要删除<代码>上载ROADADROTDIR >代码>。(是否应该是一个完全独立的问题。)

您正在尝试删除一个不存在的文件

在尝试删除文件之前,应确保它们存在。确认您确实从
$this->getFullImagePath()
获取了一个文件路径,并且通过使用确认该路径处的文件存在

您可以这样实现它:

public function removeImage()
{
    if($file = $this->getFullImagePath() && file_exists($file)) {
        unlink($file);
        rmdir($this->getUploadRootDir());
    }
}

理想情况下,您还应该检查
$this->getUploadRootDir()
是否返回一个值,以及该目录是否存在且不为空,然后再尝试删除它;但是,您也可以考虑是否每次删除文件时都需要删除<代码>上载ROADADROTDIR >代码>。(是否应该是一个完全独立的问题。)

首先,您应该检查该文件是否存在,并且是否正确

但是接下来必须检查
uploadRootDir
是否为空,因为您无法删除非空目录

$scannedDir=$this->getUploadRootDir();
if(is_dir($scannedDir)){
$entries=scandir($entries);
如果(计数($条目)==2){
//当您有两个条目时,表示您有“.”和“.”
rmdir($scannedDir);
}否则{
//目录不是空的,所以请注意这一点。
}
}否则{
//目录不存在,因此您可能会引发异常或执行其他操作。
}

首先,您应该检查该文件是否存在,并且是否正确

但是接下来必须检查
uploadRootDir
是否为空,因为您无法删除非空目录

$scannedDir=$this->getUploadRootDir();
if(is_dir($scannedDir)){
$entries=scandir($entries);
如果(计数($条目)==2){
//当您有两个条目时,表示您有“.”和“.”
rmdir($scannedDir);
}否则{
//目录不是空的,所以请注意这一点。
}
}否则{
//目录不存在,因此您可能会引发异常或执行其他操作。
}

是否要从数据库中删除该项并从文件系统中删除该文件?我要删除包含文件字段的记录,在本例中,该字段是图像。是否要从数据库中删除该项并从文件系统中删除该文件?我要删除包含文件字段的记录,在本例中为图像。实体有一个文件字段,但在本例中为空。所以它不存在,我得到了错误?是的
unlink(“”)
仍然试图删除一个文件,您会收到错误,因为一个空名称的文件不存在。因此为了解决这个问题,在函数removeImage()中,如果我将unlink和rmdir放在if构造中,如:if(file_exist($image)),它会工作吗;我已经用一种方法更新了答案。好的,谢谢!但现在的错误是:注意:未定义变量:ImageEntity有一个文件字段,但在本例中为空。所以它不存在,我得到了错误?是的
unlink(“”)
仍然试图删除一个文件,您会收到错误,因为一个空名称的文件不存在。因此为了解决这个问题,在函数removeImage()中,如果我将unlink和rmdir放在if构造中,如:if(file_exist($image)),它会工作吗;我已经用一种方法更新了答案。好的,谢谢!但现在的错误是:注意:未定义变量:image