Create class helper on folder App sample class
<?php
namespace App\Helpers;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class QueryBuilder {
public static function deleteRelation($tableRelations, $params, $tableTarget)
{
DB::transaction(function () use ($tableRelations, $params, $tableTarget) {
$path = 'records_deleted/' . date('Ymd') . '/';
foreach ($tableRelations as $key => $tableRelation) {
$rows = DB::table($tableRelation)->where($params['field'], $params['value']);
$jsonRelation = Str::slug($tableRelation . ' ' . Carbon::now(), '_') . '.json';
Storage::disk('local')->put($path . $jsonRelation, json_encode($rows->get()->toArray(), TRUE));
$rows->delete();
}
$row = DB::table($tableTarget)->where('id', $params['value']);
$jsonTarget = Str::slug($tableTarget . ' ' . Carbon::now(), '_') . '.json';
Storage::disk('local')->put($path . $jsonTarget, json_encode($row->first(), TRUE));
$row->delete();
});
}
}
Use class QueryBuilder on controller@destroy
....
public function destroy($id)
{
$tableRelations = [
'targets',
'realisasis',
'indikators',
'sasarans',
'pemangkus',
'jabatans',
'unit_kerjas',
'unit_organisasis',
];
$params = [
'field' => 'opd_id',
'value' => $id,
];
$tableTarget = 'opds';
QueryBuilder::deleteRelation($tableRelations, $params, $tableTarget);
return response()->json('Success');
}
....