Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use triggers in laravel?

My code, using PHP artisan make: migration create_trigger command

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;
  ');
}
like image 306
HARIKRISHNA Avatar asked Mar 06 '19 12:03

HARIKRISHNA


1 Answers

You don't need to create a migration for a model event. Laravel eloquent has multiple events such as retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored that you can easily use them.

first, you should create Observer for your model like this

php artisan make:observer UserObserver --model=User

in the UserObserver you can listen to any event that you like such as:

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)
    {
        //
    }
}

after that you should register your observer to model in app/providers/AppServiceProvider boot method such as:

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

for more detail visit Laravel documentation.

like image 119
hoseinz3 Avatar answered Sep 19 '22 10:09

hoseinz3