Я хотел сделать триггер. После создания 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, где я использовал функцию для вставки в приемник.
Возможный дубликат Когда использовать одинарные, двойные кавычки и обратные кавычки в MySQL
Не используйте одинарные кавычки для имен столбцов и таблиц.
Также не пытайтесь использовать неэкранированные одинарные кавычки в строке PHP с одинарными кавычками. Это не сработает ни на одном языке, который я видел. Любой приличный редактор (IDE) покажет вам это как синтаксическую ошибку. Даже stackoverflow показывает вам «приемник» черным цветом. Что означает - это не часть строки.






вы забыли добавить фасады БД, добавьте use Illuminate\Support\Facades\DB; в файл.
используйте функцию 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"));
Я изменил в соответствии с вашим предложением, но он все еще дает ошибку
Возможный дубликат Ссылка. Что означает эта ошибка в PHP?. Неверный код = ошибки.