【问题标题】:Yii framework -> My before insert DB isn't triggering on save()Yii 框架 -> 我的插入前数据库未在 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$$

【问题讨论】:

    标签: php database yii triggers save


    【解决方案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() 有什么特别之处吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多