我正在尝试使用外键删除数据,但不幸的是没有从FreeDownloadFiles表中删除,如何从该表中删除数据,请帮助我。
注意:数据已成功从freedownload表中删除,但未从FreeDownloadFiles表中删除
free_download table
id | name | images
free_download_files table
id | free_download_id | images
控制者
public function destroy(Request $request)
{
$freedownload = FreeDownload::findOrFail($request->deleteId);
$freedownloadfiles = FreeDownloadFiles::where('free_download_id', $request->deleteId)->get();
foreach ($freedownloadfiles as $key => $value) {
$delete = $value->delete();
}
// apply your conditional check here
if (false) {
$response['error'] = 'This FreeDownload has something assigned to it.';
return response()->json($response, 409);
} else {
Storage::disk('yourstitchart')->delete($freedownload->icon);
$response = $freedownload->delete();
return response()->json($response, 200);
}
}
您可以FreeDownloadFiles
通过挂钩模型定义中的模型deleting
事件来自动删除与记录关联的图像/文件FreeDownloadFiles
。
class FreeDownloadFile extends Model
{
protected static function booted()
{
static::deleting(function ($record) {
/**
* if images field contains string with comma separated paths to image files
* convert to array explode(',', $record->images)
* replace comma with whatever separator is used eg ;
*/
foreach(explode(',', $record->images) as $image) {
Storage::delete($image);
}
});
}
}
与自动删除与FreeDownloadFiles
关联的类似,FreeDownload
我们可以将deleting
事件关联到FreeDownload
class FreeDownload extends Model
{
protected static function booted()
{
static::deleting(function ($record) {
//can also use higher order magic
//$record->freeDownloadFiles->each->delete();
foreach($record->freeDownloadFiles as $file) {
$file->delete();
}
});
}
}
然后,控制器方法可以变得简单
public function destroy(Request $request)
{
$freedownload = FreeDownload::findOrFail($request->deleteId);
// apply your conditional check here
if (false) {
$response['error'] = 'This FreeDownload has something assigned to it.';
return response()->json($response, 409);
} else {
Storage::disk('yourstitchart')->delete($freedownload->icon);
$response = $freedownload->delete();
return response()->json($response, 200);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句