Phalcon:存储相关记录(隐含交易)问题

时间:2014-07-13 08:07:29

标签: phalcon

我有3张桌子/型号。他们有1-1关系。每个用户只有一个配置文件,只有一个联系地址。

当访问者在我的网站上注册新帐户时,我将在每个用户,个人资料,地址表中创建新记录。为了确保数据完整性,我想我必须在这里使用事务。所以我使用"存储相关记录(隐含交易)"在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');
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

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