Laravel update only single row

eloquent update record
update value in laravel
update data in laravel
laravel join two tables
laravel eloquent update(array)
laravel eloquent mass update
findorcreate laravel
laravel foreach update

I am having a trouble updating my single record in database with laravel.

When i run this method and give requestparams only "name" then the other fields are going to be blank in database. How to keep the values that are not specified in the requestparams?.

public function update(Request $request, $id)
    $user = User::find($id);
        $user->name = $request->input('name');
        $user->email = $request->input('email');
        $user->password = $request->input('password');
        $data = array('msg' => 'The user, you want to update, does not exist', 'error' => true);
        echo json_encode($data);

You can use the update method with the request input directly. This will only update the inputs provided.

$user->update($request->only(['name', 'email', 'password']));

Few things to note though. You're trying to update the password directly from the input. Which is a bad practise and might be wrong since laravel uses bcrypt by default to store passwords. Secondly make sure you set the $fillable property in the model to protect against mass-assignment.

protected $fillable = [
    'name', 'email', 'password'

Also you can use a mutator to hash the password like so.

public function setPasswordAttribute($value)
    $this->attributes['password'] = bcrypt($value);

Laravel - Update only selected data, You need to add $id inside your query, This is the reason it updates your whole row: DB::table('schedules')->where(  How do i update only one column per row satisfy the conditions Posted 2 years ago by Shawdow Below query executes the condition of join and gives the result of TWO id's and gets updated to closed for both id

You can do that by something like this with default values (remember about $fillable in your model).

    'name' =>  $request->input('name', $user->name),
    'email' => $request->input('email', $user->password),
    'password' => $request->input('password', $user->password),

Set your mutator in model to Hash password. :)

Good luck mate :D

How do i update only one column per row satisfy the conditions, How do i update only one column per row satisfy the conditions. Posted 2 I need to update only one ID. What is the or better use Eloquent Laravel’s Eloquent ORM has a method called fill which accepts an array and will update the database with new values for only the fields passed in. The nice thing about the fill method is that it automatically preserves values that are already stored in the database if you don’t want to update every field when doing a PUT request.

Just check if request data is empty, for example:

$user->name = empty($request->name) ? $user->name : $request->name;
$user->email = empty($request->email) ? $user->email : $request->email;
$user->password = empty($request->password) ? $user->password : bcrypt($request->password);

update multiple columns in a single row, update multiple columns in a single row //​updates DB::table('employers') ->where('emp_no', 'CD18')  I want to update multiple rows in Permission Table. I have permission id in array but i am unable to use where clause in query. I want to use permissionid in where clause and the permission id is in array of data. I can insert new records using array but i am finding difficulty to update using array. Here is my controller


use Illuminate\Support\Facades\Input;
use Hash;
use App\User;
use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class RegistrationController extends Controller

public function validator(array $data){ 

    return Validator::make($data, [
         'name' => 'required|max:255', //  Name
         'email' => 'required|email|max:255|unique:users', // Unique Email id
         'password' => 'required|min:6', //password min 6 charater


public function update(Request $request, $id)

 /* Called Validator Method For Validation */  
   $validation = $this->validator($request->all());

    $User = User::where('id',$id)->first(); /* Check id exist in table */


        $input = $request->all();
        $name = $input['name'];
        $email = $input['email'];
        $password = Hash::make($input['password']);

                 'name' => $name,
                 'email' => $email,
                 'password' => $password,

          $data = array('msg' => 'Updated successfully !! ', 'success' => true);
          echo json_encode($data);


        $data = array('msg' => 'User Not Found !! ', 'error' => true);
        echo json_encode($data);


Query Builder - Laravel, Updating JSON Columns; Increment & Decrement. Deletes If you just need to retrieve a single row from the database table, you may use the first method. Laravel's database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application and works on all supported database systems. The Laravel query builder uses PDO parameter binding to protect your application against SQL injection attacks.

You can do that like this.(Here 'posts' is Database Table name)

// write following statement in your model.
    use DB; 

     public function update($request, $id){
                $check = DB::Table('posts')->where('id',$id)->first(); 
                    $result =  DB::Table('posts')->where('id',$id)->update(
                    'name' =>  $request->name,
                    'email' => $request->email,
                    'password' => $request->password
                    return $result = array('msg' => 'Updated successfully !! ', 'success' => true);
                    return $result = array('msg' => 'User Not Found !! ', 'error' => true);

Database: Query Builder - Laravel, Using a PUT request to update a record in a database can be tricky when you only want to update the value for a specific field. By default, the  The most concise screencasts for the working developer, updated daily. There's no shortage of content at Laracasts. In fact, you could watch nonstop for days upon days, and still not see everything!

Laravel PUT Requests: Updating Only Specific Fields, If you are using MySQL database in your web project then there is always possibility that you need to insert, update, and delete records instead  The most concise screencasts for the working developer, updated daily. There's no shortage of content at Laracasts. In fact, you could watch nonstop for days upon days, and still not see everything!

Insert Update and Delete record from MySQL in Laravel, Forum > insert or update multipile rows now I would like to insert this, but if I have an exiting row with same id, I want to update only the temp column. any ideas? But I nead it in one query and one foreach Are you trying to find by ID only? Laravel's own soft delete functionality utilizes global scopes to only pull "non-deleted" models from the database. Writing your own global scopes can provide a convenient, easy way to make sure every query for a given model receives certain constraints.

insert or update multipile rows, Laravel Version: 5.5.13 PHP Version: 7.1 Database Driver: SQlite code with $​order = 3 then the metadata field on rows 1 and 3 are updated. Laravel - Update Records - We can update the records using the DB facade with update method. The syntax of update method is as shown in the following table.