Мой код с использованием команды PHP artisan make: migrate 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;
');
}






попробуй это: пожалуйста, проверьте синтаксис 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');
например, проверьте эту ссылку:
[https://itsolutionstuff.com/post/how-to-add-mysql-trigger-from-migrations-in-laravel-5example.html]1
я надеюсь помочь вам
Вам не нужно создавать миграцию для события модели. Laravel eloquent имеет несколько событий, таких как retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored, которые вы можете легко использовать.
во-первых, вы должны создать Observer для своей модели, как это
php artisan make:observer UserObserver --model=User
в UserObserver вы можете слушать любое событие, которое вам нравится, например:
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)
{
//
}
}
после этого вы должны зарегистрировать своего наблюдателя для модели в методе загрузки app/providers/AppServiceProvider, например:
public function boot()
{
User::observe(UserObserver::class);
}
для более подробной информации посетите Документация Laravel.
События модели хороши, но они не будут работать, если записи будут изменены другим приложением.
Есть ли способ просмотреть записи, измененные другим приложением, т.е. API?
Для этого типа операций laravel использует некоторую технику, аналогичную триггеру (событию). Если у вас есть несколько событий, используйте Observer, иначе вы можете выбрать это решение.
// 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;
});
}
Добро пожаловать в СО! Пожалуйста, уточните вашу конкретную проблему или добавьте дополнительные детали, чтобы выделить именно то, что вам нужно. В том виде, в котором он сейчас написан, трудно точно сказать, о чем вы спрашиваете. См. страницу Как спросить для уточнения этого вопроса.