Yii 框架 -> 我的插入前数据库未在 save() 上触发
Posted
技术标签:
【中文标题】Yii 框架 -> 我的插入前数据库未在 save() 上触发【英文标题】:Yii framework -> My before insert DB isn't triggering on save() 【发布时间】:2013-07-22 23:20:13 【问题描述】:我是 Yii 框架的新手,我似乎无法理解为什么这段代码不能正常运行。当我调用 save() 函数时,是否应该触发数据库插入触发器以便使用 UUID 自动生成 ID?如果是,它不工作,因为它保持为 NULL。有什么建议吗?
$passwordRequest = new PasswordResetRequest;
$passwordRequest->userId = 2162;
$passwordRequest->save();
echo $passwordRequest->id;
echo "test";
日志:
-- Full Trigger DDL Statements
-- Note: Only CREATE TRIGGER statements are allowed
DELIMITER $$
USE `derp_app`$$
CREATE
DEFINER=`root`@`%`
TRIGGER `derp_app`.`tbl_passwordReset_BINS`
BEFORE INSERT ON `derp_app`.`tbl_passwordReset`
FOR EACH ROW
SET NEW.id = uuid();
-- Edit trigger body code below this line. Do not edit lines above this one$$
【问题讨论】:
【参考方案1】:DROP TRIGGER IF EXISTS `tbl_passwordReset_BINS`;
DELIMITER |
CREATE TRIGGER `tbl_passwordReset_BINS`
BEFORE INSERT ON `tbl_passwordReset`
FOR EACH ROW
BEGIN
SET NEW.id = uuid();
END |
DELIMITER ;
这应该可行。使用您的 dbuser 登录 mysql 控制台(真的避免使用 root),使用您的数据库,插入触发器。 在架构中检查它
SHOW TRIGGERS;
必须工作。 我想知道你用什么128位ID?你想象一下即使有 1m 条记录,这个字段的索引会有多大?
【讨论】:
如果我尝试回显生成 UUID 的 ID。它什么也不显示,这意味着触发器没有发生。我缺少的 yii 框架 SAVE() 有什么特别之处吗?以上是关于Yii 框架 -> 我的插入前数据库未在 save() 上触发的主要内容,如果未能解决你的问题,请参考以下文章
PHP开发框架之YII框架学习——碾压ThinkPHP不是梦