shoulieheinds's avatar

How to keep exiting data of file when i just need to update some other data?

I want if I do update some data but I dont want to update file image, this will keep old data of image. How to do that? Please help me....

Here is my code for Controller:


namespace App\Http\Controllers\Admin\DataMaster;
use Auth;
use App\Leader;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ActorLeadController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }
    
    public function index()
    {
        $leaders = Leader::paginate(4);
        return view('admin.data_master.data_users.leader.index', compact('leaders'));
    }

    public function create()
        {
            return view('admin.data_master.data_users.leader.create');
        }

  protected function validator(array $data)
    {
        return Validator::make($data, [
        'name' => 'required|string',
        'email' => 'required|string|email|max:255|unique:email',
        'phone' => 'required|string|number|max:12|unique:phone',
        'job_title' => 'required|string|max:255',
        'address' => 'required|string|max:255',
        'level' => 'required|string|max:20',
        'password' => 'required|string',
        // 'photo' => $photo
        'photo' => 'require|image|mimes:jpeg,png,jpg|max:2048'
        ]);
    }

    public function store(Request $data)
    {
        $photo = $this->uploadFile($data);
        Leader::create([
        'name' => $data->name,
        'email' => $data->email,
        'phone' => $data->phone,
        'job_title' => $data->job_title,
        'address' => $data->address,
        'level' => $data->level,
        'password' => bcrypt('12345678'),
        'photo' => $photo
    ]);

    return redirect()->route('actorlead.index');
    }

    //function to handle file upload for store() & update() method.
   private function uploadFile(Request $request)
    {
        if ($request->has('photo')) {
            $leaders->photo = $request->get('photo');
            }
        $pathString = "images/img_lead";
        $pubPath = public_path($pathString);

        if($request->hasFile('photo')){
            $fileName ='isyres' . time() . '-' . $request->file('photo')->getClientOriginalName();
            $request->file('photo')->move($pubPath,$fileName);
            return asset($pathString.'/'.$fileName);
        }
        return asset('images/img_lead/image-default.png');
    }

    public function show($id)
    {
        if(!$leaders = Leader::find($id)){
            return abort(404);
        }
            return view('admin.data_master.data_users.leader.show', compact('leaders'));
    }

    public function edit($id)
    {
        if(!$leaders = Leader::find($id)){
            return abort(404);
        }
            return view('admin.data_master.data_users.leader.edit')->with('leaders', $leaders);
    }

    //edit data with file instead
    public function update(Request $data, $id)
    {
    $photo = $this->uploadFile($data);
    Leader::where('id', $id)
    ->update([
            'name' => $data->name,
            'email' => $data->email,
            'phone' => $data->phone,
            'job_title' => $data->job_title,
            'address' => $data->address,
            'level' => $data->level,
            'photo' => $photo
            ]);

    return redirect()->route('actorlead.index');
    
    }
} ```
0 likes
3 replies
mlazuardy's avatar

in laravel 5.5 i just use this to keep the old photo


    public function update(Request $request,$username)
    {
      $user = $this->getUserByUsername($username);
      $input = Input::only('name','username');
      if ($request->hasFile('avatar')) {
        $request->file('avatar')->store('public/users/');
        $user->avatar = $request->file('avatar')->hashName('users/');

      }
      $user->fill($input)->save();
      $user->save();
      return redirect('profile/'.$user->username.'/account')->with('success','Profil Telah di Update');

    }
mlazuardy's avatar

also use this for Input::

use Illuminate\Support\Facades\Input;
shoulieheinds's avatar

Thank you sir... I use laravel 5.4

But, how to validate that photo has file based of my code.

I dont know how to solve this.. I dont know where i must put the code for handle exiting file.

And, thank you so much Mr.

I'll try this :) (y)

Please or to participate in this conversation.