Ada dua masalah utama dengan kode Anda
DELIMITERbukan pernyataan sql yang valid. Itu hanya perintah klien MySql. Jadi jangan pakai saja. BTW kesalahan yang Anda dapatkan memberi tahu Anda persis seperti itu.- Anda tidak dapat menggunakan
DB::statementuntuk menjalankanCREATE PROCEDUREkode karena menggunakan pernyataan yang disiapkan sumber kode untukConnection. Anda dapat menggunakan PDOexec()DB::connection()->getPdo()->exec()sebagai gantinya
Itu dikatakan contoh migrasi untuk tags imajiner tabel mungkin terlihat seperti ini
class CreateTagsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tags', function($table){
$table->increments('id');
$table->string('name')->unique();
});
$sql = <<<SQL
DROP PROCEDURE IF EXISTS sp_insert_tag;
CREATE PROCEDURE sp_insert_tag(IN _name VARCHAR(32))
BEGIN
INSERT INTO `tags`(`name`) VALUES(_name);
END
SQL;
DB::connection()->getPdo()->exec($sql);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
$sql = "DROP PROCEDURE IF EXISTS sp_insert_tag";
DB::connection()->getPdo()->exec($sql);
Schema::drop('tags');
}
}