存储相关记录(隐式交易)问题



我有3个表/模型。他们是1:1的关系。每个用户只能有一个配置文件和一个联系人地址。

当访问者在我的网站注册一个新帐户时,我将在每个用户,配置文件,地址表中创建新的记录。为了保证数据的完整性,我想我必须在这里使用transaction。所以我在Phalcon文档中使用"存储相关记录(隐式交易)"来做到这一点,但我遇到了一个问题。

一个新记录插入到地址,但地址fk在配置文件中总是为空??一切正常,但aid fk总是空的。

User:
-uid
-email
-password
-(other records)
Profile:
-uid
-aid (address id)
-name
-age
-phone
-(other records)
Address:
-aid
-province
-district
-(other records)
class User extends Model {
    public function initialize() {
        $this->hasOne('uid', 'Profile', 'uid');
    }
}
class Profile extends Model {
    public function initialize() {
        $this->hasOne('uid', 'User', 'uid');
        $this->hasOne('aid', 'Address', 'aid');
    }
}
class Address extends Model {
    public function initialize() {
        $this->hasOne('aid', 'Profile', 'aid');
    }
}

如何解决这个问题?或者我必须手动使用隔离事务?谢谢你的帮助!: -)

是否可以在创建用户之后而在创建配置文件之前不添加地址?然后Profile表应该可以访问uid和aid。

在我看来,好像它只是按照它们被创建的顺序工作,然后不回去做更新。或者,你也可以向Address表中添加uid列,这样你就可以通过它进行映射。如果在某些时候只需要用户和地址而不需要配置文件,那么这可能也很方便。

最新更新