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