Как решить ошибку миграции при создании триггера?

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

Symfony\Component\Debug\Exception\FatalThrowableError : syntax error, unexpected 'receiver' (T_STRING), expecting ')' at E:\laravel project folder\blood\database\migrations\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 Illuminate\Filesystem\Filesystem::requireOnce("E:\laravel project folder\blood\database\migrations/2019_06_14_173818_add_trigger.php") E:\laravel project folder\blood\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php:475

2 Illuminate\Database\Migrations\Migrator::requireFiles() E:\laravel project folder\blood\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php:105

Please use the argument -v to see more details.

<?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, где я использовал функцию для вставки в приемник.

Возможный дубликат Ссылка. Что означает эта ошибка в PHP?. Неверный код = ошибки.

emix 14.06.2019 20:38

Не используйте одинарные кавычки для имен столбцов и таблиц.

Paul Spiegel 14.06.2019 21:32

Также не пытайтесь использовать неэкранированные одинарные кавычки в строке PHP с одинарными кавычками. Это не сработает ни на одном языке, который я видел. Любой приличный редактор (IDE) покажет вам это как синтаксическую ошибку. Даже stackoverflow показывает вам «приемник» черным цветом. Что означает - это не часть строки.

Paul Spiegel 14.06.2019 21:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
233
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  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"));
    

Я изменил в соответствии с вашим предложением, но он все еще дает ошибку

Nishat Anjum Lea 14.06.2019 20:09

Другие вопросы по теме