Как устранить ошибку миграции при создании триггера? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу сделать триггер. После создания php make:migration AddTrigger и написания кода, когда я пишу php artisan migrate в cmd, я получаю следующую ошибку:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError: синтаксическая ошибка, неожиданный «получатель» (T_STRING), ожидающий «)» в проекте E: \ laravel папка \ крови \ базы данных \ миграции \ 2019_06_14_173818_add_trigger.php: 16

  12|      * @return void
  13|      */
  14|     public function up()
  15|     {
> 16|          DB::unprepared('CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR EACH ROW
  17|                 BEGIN
  18|                    INSERT INTO 'receipt' ('r_id') VALUES (10);
  19|                 END');
  20|     }

Трассировка исключения:

1 Подсветка \ Файловая система \ Файловая система :: requireOnce ("E: \ laravel проект папка \ крови \ базы данных \ миграции / 2019_06_14_173818_add_trigger.php ") E: \ папка проекта laravel \ blood \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Migrations \ Migrator.php: 475

2 Подсветка \ База данных \ Миграции \ Мигратор :: requireFiles () E: \ laravel project folder \ blood \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Migrations \ Migrator.php: 105

Пожалуйста, используйте аргумент -v, чтобы увидеть больше деталей.

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddTrigger extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
     DB::unprepared('CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR 
EACH ROW
            BEGIN
               INSERT INTO 'receipt' ('r_id') VALUES (10);
            END');
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    DB::unprepared('DROP TRIGGER 'amount'');
}
}

Я использовал контроллер с именем PageController, где я использовал функцию для вставки в приемник.

1 Ответ

0 голосов
/ 14 июня 2019
  1. вы забыли добавить фасады БД, добавив в файл use Illuminate\Support\Facades\DB;.

  2. используйте функцию DB::raw для выполнения необработанных запросов и двойные кавычки для запроса.

    DB::unprepared(DB::raw("CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR EACH ROW
                BEGIN
                   INSERT INTO 'receipt' ('r_id') VALUES (10);
                END"));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...