繁体   English   中英

CakePHP 3.0保存我的关联数据

[英]CakePHP 3.0 Saving My Associated Data

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

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

所以我的代码

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');

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

那我在做什么错?

在阅读我的问题时,请保持友善,我患有阅读障碍,所以我可能没有正确地解释事情,请告诉我是否需要重新措词,扩大我所说的内容,非常感谢您的理解。

好的,看来我已经解决了自己的问题,但不确定是否是最佳解决方案。 因此,如果其他人使用其他方法,请告诉我。

因此,我再次读取了Cake文档(再次...),并放入TableRegistry ,这似乎可行。

所以我的代码目前是

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

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

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

 }

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

谢谢,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM