Я работаю над laravel 4.1. Я хочу создать функцию MYSQL с миграцией, но она не работает с php artisan migrate
. даже если он показывает Migrated: 2017_01_10_140002_create_MYSQL_UNAVAILABLE_PRODS_FUNCTION
в консоли. и когда я копирую/миную один и тот же код создания в MYQL-клиенте, он работает и создается функция. и когда я запустил php artisan migrate:rollback
, функция будет удалена.
Любая помощь будет оценена по достоинству.Создание MYSQL FUNCTION в Laravel 4 Миграции
миграция файл:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMYSQLUNAVAILABLEPRODSFUNCTION extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$available = Constant::PRODUCT_AVAILABLE_TRUE | Constant::PRODUCT_AVAILABLE_STOCK_TRUE;
$sql = 'DROP FUNCTION IF EXISTS UNAVAILABLE_PRODS;
DELIMITER $$
CREATE FUNCTION UNAVAILABLE_PRODS(CONFIG_ID INT, PROD_TYPE INT)
RETURNS TEXT
LANGUAGE SQL
BEGIN
DECLARE RES TEXT;
SET GROUP_CONCAT_MAX_LEN = 2048;
SET RES = (SELECT GROUP_CONCAT(ID SEPARATOR \'|\') FROM PRODUCT_BASE WHERE `PRODUCT_TYPE` & PROD_TYPE AND `PRODUCT_BASE`.`AVAILABLE` <> ' . $available . ');
RETURN CONCAT(CONFIG_ID, \'=(\', RES, \')\');
END;
$$
DELIMITER ;
';
DB::unprepared($sql);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::unprepared('DROP FUNCTION IF EXISTS UNAVAILABLE_PRODS;');
}
}
Почему вы не используете Красноречивый? – Buglinjo
У меня есть поле, называемое информацией в БД, с данными в этой форме ** config_id1 = prod_id1 | config_id2 = prod_id2 | ... ** поэтому вместо того, чтобы использовать php для выполнения некоторого теста, отправив список сотен идентификаторов .. для производительности важно, чтобы это делалось на стороне MYSQL. и мне нужно проверить, имеет ли это поле значение пары key = value из списка значений, например: 41 = (202 | 101 ..) с: 'SELECT ... WHERE info REGEXP UNAVAILABLE_PRODS (41, 64)'. результат после выполнения функции будет таким: SELECT ... WHERE info REGEXP '41 = (prod_id1 | prod_id2 ...) '': –