2016-02-10 3 views
2

Я пытаюсь создать триггер MySQL с помощью миграции мастеров.Laravel Migration DELIMITER

DB::unprepared(' 
    DELIMITER $$ 
    CREATE TRIGGER cascade_courseAffinity_after_facultyAffinity 
    AFTER DELETE ON faculty_affinities 
    FOR EACH ROW 
    BEGIN 
     DELETE ca 
     FROM course_affinities AS ca 
     JOIN courses AS course1 ON ca.course1_id = course1.id 
     JOIN courses AS course2 ON ca.course2_id = course2.id  
     WHERE (course1.faculty_id = OLD.faculty1_id OR course1.faculty_id = OLD.faculty2_id) 
     AND (course2.faculty_id = OLD.faculty1_id OR course2.faculty_id = OLD.faculty2_id); 
     END 
    $$ 
'); 

Тем не менее, когда я запускаю миграцию, я получаю ошибку

SQLSTATE[]: Syntax error... near DELIMITER $$ at line 1 

помочь кому-то?

Edit 1: это те файлы, миграции я использую на MySQL

создать «курсы» стол с один ко многим отношений с факультета (faculty_id).

Schema::create('courses', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->string('name', 150); 
        $table->integer('faculty_id')->unsigned(); 
        $table->foreign('faculty_id')->references('id')->on('faculties'); 
        $table->boolean('active')->default(1); 
        //$table->softDeletes(); 
       }); 

Создать таблицу «факультеты».

 Schema::create('faculties', function (Blueprint $table) { 
         $table->increments('id'); 
         $table->string('name', 150)->unique(); 
         $table->boolean('active')->default(1); 
         //$table->softDeletes(); 
       }); 

Создайте таблицу «course_affinities» со многими отношениями между отношениями между собой.

Schema::create('course_affinities', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->integer('course1_id')->unsigned(); 
         $table->foreign('course1_id')->references('id')->on('courses'); 
        $table->integer('course2_id')->unsigned(); 
         $table->foreign('course2_id')->references('id')->on('courses'); 
        $table->boolean('active')->default(1); 
        //$table->softDeletes(); 
       }); 

Создайте таблицу «faculty_affinities» с отношением между многими и многими отношениями между способностями.

Schema::create('faculty_affinities', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->integer('faculty1_id')->unsigned(); 
         $table->foreign('faculty1_id')->references('id')->on('faculties'); 
        $table->integer('faculty2_id')->unsigned(); 
         $table->foreign('faculty2_id')->references('id')->on('faculties'); 
        $table->boolean('active')->default(1); 
        //$table->softDeletes(); 
       }); 
+0

Создал ли какой-либо файл миграции? – Laerte

+0

Да. У меня несколько миграций. Это единственная ошибка. –

+0

Можете ли вы отредактировать сообщение с кодом перехода? – Laerte

ответ

0

Проблема в команде DELIMITER. Эта команда предназначена для использования только в MySQL Client. Таким образом, вы не можете использовать его в Laravel.

Возьмите время, чтобы прочитать этот пост: Creating MYSQL Procedure in Laravel 4 Migrations

Это проблема очень похожа на вашу.

Смежные вопросы