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; '); }
3 Réponses :
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
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 .
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?
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; }); }
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.