CakePHP 3.0 保存我的关联数据

Posted

技术标签:

【中文标题】CakePHP 3.0 保存我的关联数据【英文标题】:CakePHP 3.0 Saving My Associated Data 【发布时间】:2015-04-07 16:15:44 【问题描述】:

我想做的是建立一个新的用户注册。输入,现在我有一些工作,但似乎无法像新文档所说的那样拯救我的公司。

现在我不确定我是否只是不理解 Cakephp 网站上的文档,但我似乎无法将相关数据保存到新表中,然后将其 ID 放入我的用户表中。

所以我的代码

public function add() 
    $this->loadModel('Companies');
    $user = $this->Users->newEntity();
   // $company = $this->Companies->newEntity();

    if ($this->request->is('post')) 
        //$company = $this->Companies->patchEntity($company, $this->request->data['company']);
        $user = $this->Users->patchEntity($user, $this->request->data, [ 'associated' => 'Company.name' ]);

        //debug($company);
        debug($this->Users->save($user));
        die();

        if ($this->Companies->save($company)) 
            debug($company);
            debug($user);
            die();

            if ($this->Users->save($user)) 
                $this->Flash->success('The user has been saved.');
                return $this->redirect(['action' => 'index']);
             else 
                $this->Flash->error('The user could not be saved. Please, try again.');
            

         //End of 'save' for company name


    

    $userlevels = $this->Users->Userlevels->find('list', ['keyField' => 'id', 'valueField' => 'usertitle']);

    $this->set(compact('user', 'userlevels'));
    $this->set('_serialize', ['user']);

MY 数据库,即 mysql,有一个用户表,其中有一个“company_id”字段。所以我做了一个测试,并在我的表单上获取用户输入的公司名称并保存它,如果我调试它可以很好地保存并让我在properties 部分恢复我保存数据的新 ID。

但是根据我的阅读,我应该能够将其保存在我的用户保存中?我仍然添加了公司模型,不确定是否需要?

但是当我调试保存给用户时,它保存了用户而不是新公司?

如果需要,我可以发布其他详细信息,但这段代码只是根据蛋糕烘焙的内容进行了一些编辑。我确实将公司的输入表单更改为$this->Form->input('company.name');

所以最终目标是能够将用户详细信息保存到新用户中,并将公司名称保存到新公司记录中。

那我做错了什么?

阅读我的问题时请善待,我有阅读障碍,所以我可能没有正确解释事情,请告诉我是否需要重新措辞,扩展我所说的内容,非常感谢您的理解....

【问题讨论】:

【参考方案1】:

好的,看来我已经解决了自己的问题,但不确定它是否是最佳解决方案。所以如果其他人有不同的方法,请告诉我。

所以我重新阅读了 Cake 文档,(再次...),并输入了 TableRegistry,这似乎有效。

所以我的代码目前是,

 $UserData = TableRegistry::get('Users');
 $user = $UserData->newEntity( $this->request->data );

 if ($this->request->is('post')) 

    debug( $UserData->save($user) ); 

 

这会将新公司名称保存在我的公司表中,并将 ID 放入我的用户表中。需要进行更多测试,但我想我会将其发布到 a) 获得一些反馈,看看这是否确实是正确的做法 b) 以帮助其他想要这样做的人。

谢谢,

【讨论】:

您也可以在控制器中使用$this->loadModel('Users'),然后使用$this->Users 变量

以上是关于CakePHP 3.0 保存我的关联数据的主要内容,如果未能解决你的问题,请参考以下文章

cakephp 3.0 注册与现有用户问题关联的帐户

CakePHP patchEntity 不保存数据(“通过”关联)

CakePHP - 如何在保存时将关联记录添加到模型中?

CakePHP 保存非常深的关联模型

cakephp:使用 saveAll(),导入的(非表单相关的)关联数据不保存

在 Cakephp 3 中保存关联模型