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() 上触发的主要内容,如果未能解决你的问题,请参考以下文章

yii掌上电脑无法保存

PHP开发框架之YII框架学习——碾压ThinkPHP不是梦

我选择 Yii 作为我的 PHP 框架是正确的选择吗? [关闭]

Yii系列最佳实践之后台业务框架

Yii系列最佳实践之后台业务框架

通过 yii 框架使用来自单独 .cpp 文件的函数