Laravel eloquent update record without loading from database

后端 未结 5 1047
无人共我
无人共我 2021-02-05 00:06

I\'m quite new to laravel and I\'m trying to update a record from form\'s input. However I see that to update the record, first you need to fetch the record from database. Isn\

相关标签:
5条回答
  • 2021-02-05 00:24

    You can simply use Query Builder rather than Eloquent, this code directly update your data in the database :) This is a sample:

    DB::table('post')
                ->where('id', 3)
                ->update(['title' => "Updated Title"]);
    

    You can check the documentation here for more information: http://laravel.com/docs/5.0/queries#updates

    0 讨论(0)
  • 2021-02-05 00:30
    Post::where('id',3)->update(['title'=>'Updated title']);
    
    0 讨论(0)
  • 2021-02-05 00:35

    Use property exists:

    $post = new Post();
    $post->exists = true;
    $post->id = 3; //already exists in database.
    $post->title = "Updated title";
    $post->save();
    

    Here is the API documentation: http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Model.html

    0 讨论(0)
  • 2021-02-05 00:40

    You can also use firstOrCreate OR firstOrNew

    // Retrieve the Post by the attributes, or create it if it doesn't exist...
    $post = Post::firstOrCreate(['id' => 3]);
    // OR
    // Retrieve the Post by the attributes, or instantiate a new instance...
    $post = Post::firstOrNew(['id' => 3]); 
    
    // update record
    $post->title = "Updated title";
    $post->save();
    

    Hope it will help you :)

    0 讨论(0)
  • 2021-02-05 00:47

    The common way is to load the row to update:

    $post = Post::find($id);
    

    I your case

    $post = Post::find(3);
    $post->title = "Updated title";
    $post->save();
    

    But in one step (just update) you can do this:

    $affectedRows = Post::where("id", 3)->update(["title" => "Updated title"]);
    
    0 讨论(0)
提交回复
热议问题