【发布时间】:2020-09-07 14:17:33
【问题描述】:
我创建了两个数据库,一个是父数据库,另一个是子数据库。父表包含标题和描述列,子表包含父行的图像列。现在我想从父表中删除一行,并从它存储到的文件夹中删除图像。
我已经完成了:-
要从数据库中删除的代码, 从子表中删除并从保存图像的文件夹中删除图像的代码, 从父表中删除行的代码。
我做不到:-
删除父行时从保存图像的文件夹中删除的代码。
我的控制器是这样的[
ProjectControllers 控制我的父表 ProjectImageControllers 控制我的子表
//This is my ProjectControllers.php
public function destroy(Project $project)
{
$projectImage = Project::find(request('id'));
$deleted = $projectImage->delete();
if($deleted){
File::delete(public_path('/images/projects/').$projectImage->image);
}
$projectList = Project::all();
return view('admin.project.adminProject', ['success'=> true, 'projectList' => $projectList ]);
}
]
模型关系如下[
这是 Project.php 模型
class Project extends Model
{
public function projectImages(){
return $this->hasMany(ProjectImages::class);
}
}
这是 ProjectImages.php 模型
class ProjectImages extends Model
{
protected $fillable = [
'image', 'project_id'
];
public function project(){
return $this->belongsTo(Project::class, 'project_id');
}
}
]
【问题讨论】:
-
可能是权限问题尝试使用
unlink()而不是File::delete()和dd()结果,这样您就可以看到哪里出了问题。dd(unlink(public_path('/images/projects/').$projectImage->image)); -
您是否在删除模型实体之前尝试取消链接图像?
-
不,它不工作。也许我们需要使用循环从文件中一一删除。如果在数据库中找不到,那么也从文件中删除.. 或者其他任何东西.. 我对编码很陌生,你能帮我解决循环概念吗?