3
votes

Comment utiliser les déclencheurs dans laravel?

Mon code, en utilisant PHP artisan make: commande migration create_trigger

public function up()
{
  DB::unprepared(' 
  CREATE TRIGGER roll_no BEFORE INSERT ON `students` FOR EACH ROW 
  BEGIN 
  SET @roll_num = IFNULL((substring((SELECT student_roll_no FROM students WHERE
    class_code = NEW.class_code ORDER BY created_at DESC LIMIT 1),-2) + 1), `1`),
    NEW.student_roll_no = CONCAT(
    YEAR(CURRENT_DATE),
    NEW.class_code,
    IF (@roll_num < 10, CONCAT(`0`, @roll_num), @roll_num) 
  )
  END;
  ');
}


1 commentaires

Bienvenue à SO! Veuillez clarifier votre problème spécifique ou ajouter des détails supplémentaires pour mettre en évidence exactement ce dont vous avez besoin. Dans la forme actuelle, il est difficile de dire exactement ce que vous demandez. Consultez la page Comment demander pour obtenir de l'aide pour clarifier cette question.


3 Réponses :


0
votes

essayez ceci: veuillez vérifier votre syntaxe SQL

DB::unprepared('CREATE TRIGGER roll_no BEFORE INSERT ON `students` FOR EACH ROW
        BEGIN
            SET @roll_num = IFNULL((substring((SELECT student_roll_no FROM students WHERE class_code = NEW.class_code ORDER BY created_at DESC LIMIT 1),-2) + 1), `1`),
            NEW.student_roll_no = CONCAT(YEAR(CURRENT_DATE)),
            NEW.class_code,
            IF (@roll_num < 10,
                CONCAT(`0`, @roll_num),
                @roll_num
            )
        END');

par exemple veuillez vérifier ce lien:

[https://itsolutionstuff.com/post/how-to-add-mysql-trigger-from-migrations-in -laravel-5example.html] 1

J'espère vous aider


0 commentaires

8
votes

Vous n'avez pas besoin de créer une migration pour un événement de modèle. Laravel éloquent a plusieurs événements tels que récupéré, création, créé, mise à jour, mis à jour, enregistrement, enregistré, suppression, supprimé, restauration, restauré que vous pouvez facilement les utiliser.

Tout d'abord, vous devez créer Observateur pour votre modèle comme celui-ci

php artisan make: observer UserObserver --model = User

dans le UserObserver, vous pouvez écouter tout événement que vous aimez tel que:

public function boot()
{
     User::observe(UserObserver::class);
}

après cela, vous devez enregistrer votre observateur pour model dans la méthode de démarrage app / provider / AppServiceProvider telle que:

class UserObserver
{
    /**
     * Handle the User "created" event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function created(User $user)
    {
        //
    }

    /**
     * Handle the User "updated" event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function updated(User $user)
    {
        //
    }
}

pour plus de détails, visitez Documentation Laravel .


2 commentaires

Les événements de modèle sont bons, mais ils ne fonctionneraient pas si les enregistrements étaient modifiés par une autre application.


Existe-t-il un moyen de regarder les enregistrements modifiés par une autre application, c'est-à-dire une API?



0
votes

Pour ce type d'opération, laravel fait une technique similaire au trigger (event). Si vous avez plusieurs événements, utilisez Observer sinon vous pouvez choisir cette solution.

// inside your model

public function boot()
{
    parent::boot();

    // beforeCreate
    self::creating(function($model) {
        // do something with your $model before saving....

        // return true or the save will cancel....
        return true;
    });


    // afterCreate
    self::created(function($model) {
        // do something with your $model after saving....

        // return true or the save will cancel....
        return true;
    });


}


0 commentaires