DELIMITER //
CREATE FUNCTION preg_replace(pattern varchar(10000), replacer varchar(10000), original varchar(10000))
RETURNS varchar(10000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(10000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp ='';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp, ch);
ELSE
SET temp = CONCAT(temp,replacer);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END//
UPDATE news
SET content = preg_replace('\r+', ' ', content)//
воскресенье, 7 августа 2011 г.
Замена по регулярному выражению в MySQL
Вот так можно делать замену подстроки в строке по регулярному выражению в MySQL.
пятница, 5 августа 2011 г.
Yii DAO и маппинг
При работе с фреймворком yii возникла необходимость выполнить сложный sql-запрос. Такой, что проще было использовать DAO, чем Active Record.
Но очень расстраивало, что DAO возвращает ассоциированные массивы, а не объекты. Везде на сайте используется ORM, а тут вдруг выборка массивами...
К счастью, было найдено решение при помощи PDO-магии. И оно работает, отдает и заполняет объект, как при использовании AR.
Примечание: AR не дает решения для всех задач, касающихся работы с базами данных. Лучше всего его использовать для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. Для сложных случаев следует использовать Yii DAO.
Но очень расстраивало, что DAO возвращает ассоциированные массивы, а не объекты. Везде на сайте используется ORM, а тут вдруг выборка массивами...
К счастью, было найдено решение при помощи PDO-магии. И оно работает, отдает и заполняет объект, как при использовании AR.
Copy Source | Copy HTML
- $command=Yii::app()->db->createCommand($sql);
- $command->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "Post");
- $posts=$command->queryAll();
Подписаться на:
Сообщения (Atom)