How do I update user profile? Laravel-5
11,675
Try this:
public function update(Request $request, $id)
{
$User = User::with('user_info')->find($id);
if(!$User) {
return response('User not found', 404);
}
$UserInfo = $User->user_info;
if(!$UserInfo) {
$UserInfo = new UserInfo();
$UserInfo->user_id = $id;
$UserInfo->save();
}
try {
$values = Input::only($UserInfo->getFillable());
$UserInfo->update($values);
} catch(Exception $ex) {
return response($ex->getMessage(), 400);
}
}
also in Your UserInfo model add this:
protected $fillable = array('description', 'experience');
public function getFillable() {
return $this->fillable;
}
Author by
jackjoesmith
Updated on June 05, 2022Comments
-
jackjoesmith almost 2 years
Just want to start by saying I have no clue what I'm doing... I have a user_info table that looks like this
Schema::create('user_info', function(Blueprint $table){ $table->increments('id'); $table->unsignedInteger('user_id'); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); $table->string('address'); $table->string('city'); $table->string('state'); $table->string('zip'); $table->text('description'); $table->text('experience'); $table->timestamps(); });
I'm having trouble creating the update controller which looks like this right now.
public function update(Request $request) { $user = $request->user(); $data['description'] = $request->input('description'); $data['experience']=$request->input('experience'); $user->user_info -> $data->save(); }
again...no clue what I'm doing...
and this be my form:
<div class='col-md-10 well form-well'> {!! Form::open(['method' => 'PATCH', 'action'=> ['UserController@update', Request::user()->id]]) !!} <div class='row'> <div class='form-group'> <div class='col-md-2'> {!! Form::label('description', 'About You')!!} </div> <div class='col-md-7'> {!! Form::textarea('description', null, ['class'=>'form-control', 'rows'=>'3'])!!} </div> </div> </div> <div class='row'> <div class='form-group'> <div class='col-md-2'> {!! Form::label('experience', 'Experience and Skills')!!} </div> <div class='col-md-7'> {!! Form::text('experience', null, ['class'=>'form-control'])!!} </div> </div> </div> <div class='form-group'> {!! Form::submit('Save Changes',['class'=> 'btn btn-md btn-success']) !!} {!! Form::close()!!} </div>
Update: I was able to update it like this:
$user->user_info->description = $data['description']; $user->user_info->experience = $data['experience']; $user->user_info->save();
But is there a way I can do something like :
$user->user_info->$request::Input::all(); $user->user_info->save();