5. Observers


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Fernando Noe Marquez Garcia

    Fernando Noe Marquez Garcia hace 1 semana

    Para los que trabajamos en laravel 11 podemos hacer lo siguiente:

    #### Forma 1. ####

    Vamos a la ruta de app\Providers\AppServiceProvider.php

    public function boot(): void
        {
            Article::observe(ArticleObserver::class); //Agregar
        }

    #### Forma 2. ####

    Vamos al modelo Article.php y agregamos 

    use App\Observers\ArticleObserver; //Agregar
    use Illuminate\Database\Eloquent\Attributes\ObservedBy; //Agregar
    #[ObservedBy([ArticleObserver::class])] //Agregar

    Quedaria de la siguiente manera

    <?php
    
    
    namespace App\Models;
    
    
    use App\Observers\ArticleObserver; 						//Agregar
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\Attributes\ObservedBy; //Agregar
    
    #[ObservedBy([ArticleObserver::class])] 				//Agregar
    
    class Article extends Model
    {
        use HasFactory;
        
        protected $fillable = [
            'title',
            'content',
            'user_id',
            'is_published',
            'sort'
        ];
        
        //Relacion uno a muchos inversa
        public function user(){
            return $this->belongsTo(User::class);
        }
    }

    Siempre pueden ver la documentacion ✌️

  • José Pablo Casanueva Bórquez

    José Pablo Casanueva Bórquez hace 7 meses

    Buenas estoy trabajando con Laravel 11, dentro de los providers no tengo el que menciona en el video, solo tengo 3 quem son: AppServiceProvider, FortifyServiceProvider y JetstreamServiceProvider. En donde deberia registrar el observer ?

    • Pablo Luciano hace 7 meses

      Me pasa lo mismo

    • José Pablo Casanueva Bórquez hace 7 meses

      3 semanas y ninguna respuesta, muy malo el soporte de estos cursos. 

    • Victor Arana Flores hace 6 meses

      Hola, primero disculpar por la demora.

      Los observers en Laravel 11 se registra de la siguiente manera:

      Dirigete al modelo, en la parte de arriba agrega la siguiente definicion

      use Illuminate\Database\Eloquent\Attributes\ObservedBy;

      y luego lo registras de esta manera

      #[ObservedBy([UserObserver::class])]
      class User extends Authenticatable
      {
          //
      }

      Esto sería todo

    • Mitz hace 6 meses

      <?php

      namespace App\Models;

      use App\Models\User;

      use App\Observers\ArticleObserver;

      use Illuminate\Database\Eloquent\Model;

      use Illuminate\Database\Eloquent\Factories\HasFactory;

      use Illuminate\Database\Eloquent\Attributes\ObservedBy;

      #[ObservedBy([ArticleObserver::class])]

      class Article extends Model

      {

          use HasFactory;

          //Asignacion masiva bd

          protected $fillable = ['title', 'content', 'user_id','is_published','sort'];

          //Relacion uno a muchos inversa con usuario

          public function user(){

              return $this->belongsTo(User::class);

          }

       

       

      }

  • Jean Gaspar Gracia Gonzalez

    Jean Gaspar Gracia Gonzalez hace 1 año

    en el error del minuto 4:08 a pesar de haber creado el observer cuando corro la migracion con el seeder me da este error SQLSTATE[23502]: Not null violation: 7 ERROR:  el valor nulo en la columna «sort» de la relación «users» viola la restricción de no nulo, tuve que irme al factory para  crear una variable estática donde pueda llevar la cuenta de los registros creados static $sort = 1;  y en el return 'sort' => $sort++,  para asigna el valor de la variable y luego ir incrementando. Porque no me funciono solamente creando el observer?
     

    • Daniel Mendez Amutari hace 3 meses

      yo pensaba hacer lo mismo. pero como se explica en el video el observer toma ese valor y va aumentando por cada registro. 

       

      me tarde en hacerlo correr pero no por el cambio que hay en laravel 11 sino porque en ves de poner = puse un -    

       

      en fin en laravel 11 lo que se esta haciendo es que aiga menos archivos y simplificarlo. a lo que entendi en la documentacion.