Actualizar Registros con Eloquent en Laravel

Hola developers, hoy en esta sección vamos a aprender a actualizar registros en las tablas de la base de datos de una forma simple. Pero antes de empezar a interactuar con las tablas debes de crear un modelo e importarlo al controlador.

Autor: rogercode. Full stack developer

Para actualizar un registro se debe de obtener y posterior asignar los atributos con los nuevos valores que se desea actualizar. Al final se llama el método save() que también se puede utilizar para actualizar los registros

Actualizar registros con el metodo save() en Laravel☟.

Crear el modelo Articulo. ☛ Ver más sobre los modelos

            
              
    <?php
    namespace App\Models;
    use Illuminate\Database\Eloquent\Model;
    class Articulo extends Model
    {
      protected $fillable = [ //Se declaran los nombres de las columnas de la tabla.
        'nombre',
        'codigo_barra',
        'precio_compra',
        'precio_venta'.
        'stock',
      ];
    }
    
    
            
          

Se actualizan los datos de las columnas de la tabla articulo con el método save().

            
              
     <?php
      namespace App\Http\Controllers;
      use Illuminate\Http\Request;
      use App\Models\Articulo; //Importamos el método Articulo para utilizarlo en las cónsulas con ORM.
        class ArticuloController extends Controller
        {
        Public function update (Request $request, $id) { //Recibe como parámetro el id del registro y los nuevos datos para actualizar.

          $articulo = Articulo::find(1); //Encontramos el registro donde su id de articulo sea igual a 1.
          //Se asignan los nuevos datos a actualizar de cada columna.
          $articulo->nombre = $request->nombre;
          $articulo->codigo_barra = $request->codigo_barra;
          $articulo->precio_compra = $request->precio_compra;
          $articulo->precio_venta = $request->precio_venta;
          $articulo->stock = $request->stock;
          $articulo->save(); //Se llama el método save para actualizar los datos.
        }
      }
    
            
          

Actualizar registros con el método update() de eloquent en Laravel☟.

Se puede actualizar los registros mediante el método update() que genera un array con los datos.

El metodo update() espera una matriz de columnas con sus corespondientes valores para poder actualizarse.

Al final el método update() devuelve el número de filas afectadas.

            
              
     <?php
      namespace App\Http\Controllers;
      use Illuminate\Http\Request;
      use App\Models\Articulo; //Importamos el método Articulo para utilizarlo en las cónsulas con ORM.
        class ArticuloController extends Controller
        {
        Public function update (Request $request, $id) { //Recibe como parámetro el id del registro y los nuevos datos para actualizar.

          $articulo = Articulo::find(1);  //Encontramos el registro donde su id de articulo sea igual a 1.

          $articulo->update([ //Se genera el array con los valores a actualizar del registro.
            'nombre' => $request->nombre,
            'codigo_barra' => $request->codigo_barra,
            'precio_compra' => $request->precio_compra,
            'precio_venta' => $request->precio_venta,
            'stock' => $request->stock
          ]);
        }
      }
    
            
          

Actualizar registros utilizando una condición mediante los métodos where() y update() en Laravel☟.

Se pueden actualizar registros de la tabla que coincidan con la consulta generada mediante eloquent.

            
              
     <?php
      namespace App\Http\Controllers;
      use Illuminate\Http\Request;
      use App\Models\Articulo; //Importamos el método Articulo para utilizarlo en las cónsulas con ORM.
        class ArticuloController extends Controller
        {
        Public function update (Request $request) { //Recibe como parámetro el valor que necesitamos que se cumpla en el método where.
          $pcompra = $request->pcompra; //Variable que contiene el valor de 500.
          Articulo::where('precio_compra', '>', $pcompra) //Condición where donde precio de compra sea mayor a 500.
          ->update([
            'stock' => 100, //Si la condición se cumple actualizar el stock a 100.
            'precio_venta' => 650 //Si la condición se cumple actualizar precio de venta a 650.
          ]);
        }
      }