Reputation: 411
I am going to insert and update values using my addpermission function in my Controller
public function addPermission(Request $request, $id, $permission = null)
{
$this->validate($request, [
'status' => 'required'
]);
if(is_null($permission)) {
$permission = new Permission;
$msg = 'Permission has been added to your Collaborator successfully';
} else {
$permission = Permission::findOrFail($permission,['id'])->id;
$msg = 'Permission updated successfully';
}
$permission->status = $request->input('status');
$permission->project_id = $id;
$permission->collaborator_id = $request->input('cid');
$permission->save();
return redirect()->back()->with('info', $msg);
}
My routes
Route::post('projects/{project_id}/permission', [
'uses' => 'ProjectCollaboratorsController@addPermission',
'as' => 'projects.collaborators.permission',
// 'middleware' => ['auth']
]);
Data insert works properly, but update doesn't work.
When I click button to update it is inserts as new record to the database.
My table name is permission and have the following columns
What do I need to change to make the updating work?
Upvotes: 1
Views: 69
Reputation: 3186
I think you may need to put an optional route parameter in for permission id.
Route::post('projects/{project_id}/permission/{permission_id?}', [
'uses' => 'ProjectCollaboratorsController@addPermission',
'as' => 'projects.collaborators.permission',
// 'middleware' => ['auth']
]);
Upvotes: 0
Reputation: 1136
You should write this. Hopefully This will solve your problem
public function addPermission(Request $request, $id, $permission)
{
$this->validate($request, [
'status' => 'required'
]);
$per = Permission::where('id', $permission)->first();
if(is_null($permission)) {
$permission = new Permission;
$msg = 'Permission has been added to your Collaborator successfully';
} else {
$permission = Permission::findOrFail($per)->id;
$msg = 'Permission updated successfully';
}
$permission->status = $request->input('status');
$permission->project_id = $id;
$permission->collaborator_id = $request->input('cid');
$permission->save();
return redirect()->back()->with('info', $msg);
}
Upvotes: 0
Reputation: 467
I see an error in this line, this should return the permission object not the id of permission.
$permission = Permission::findOrFail($permission,['id'])->id; Change to, $permission = Permission::findOrFail($permission['id']);
Upvotes: 1