【问题标题】:Create/Update Parent relation when Create/Update child relational model in Yii2在 Yii2 中创建/更新子关系模型时创建/更新父关系
【发布时间】:2015-07-02 08:51:05
【问题描述】:

我有一个 User 模型(名称、用户名、密码等)和一个 Customer 模型,它与 User 模型具有 1 对 1 的关系,这个模型是用于存储(名字、姓氏、电子邮件...)。

我想让客户通过注册过程创建他们的帐户,并要求他们提供(名字、姓氏、电子邮件、密码……)

因此,很明显,注册过程必须首先创建一个 用户 帐户(使用名字和姓氏作为名称,电子邮件作为用户名和密码)。然后可以创建客户帐户。

尽管,如果客户以后想更改他的名字,我们必须更新用户帐户中的字段名称..

在 Yii2 中实现这一目标的最佳方法是什么?

我试图覆盖 Customer AR 上的 beforeSave(),但我面临的问题是如何在尚未创建相关用户时使用相关用户填充属性。

那么问题来了:我们如何在创建新的客户帐户时创建用户帐户?以及,更新客户账号时如何更新相关的用户账号?

谢谢大家。

【问题讨论】:

    标签: activerecord yii2 relationship updatemodel


    【解决方案1】:

    您可以在客户控制器中简单地管理它,并适当地更改创建和更新操作。

    例如用于 actionCreate :

    public function actionCreate()
        {
            $modelCustomer = new Customer();
            modelUser = new User(); 
    
    
            if ($modelCustomer->load(Yii::$app->request->post()) && $modelCustomer->save()) {
                modelUser->name = $modelCustomer->name; 
                .........
                $modelUser
                return $this->redirect(['index']);
            } else {
                return $this->render('create', [
                    'model' => $modelCustomer,
                ]);
            }
        }
    

    【讨论】:

    • 感谢您的快速重播。但是有没有办法从客户模型中做到这一点?这将有助于不重复该过程。想象一下,客户可以注册自己,管理员可以创建/更新客户帐户。在这种情况下,我们必须两次保持这种关系。
    • 还有一个问题,在保存用户模型之前,我无法保存客户模型,因为客户表继承自用户表。所以,我需要在数据库中插入一条用户记录并获取id,然后我才能插入客户记录。
    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2021-04-25
    相关资源
    最近更新 更多