CakePHP 3.0保存我的相关数据

时间:2015-04-07 16:15:45

标签: php cakephp cakephp-3.0

我要做的是建立一个新的用户注册表。输入,现在我有一些工作,但似乎无法以新文档的方式保存我的公司。

现在我不确定我是不是不了解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']);
}

我的数据库是MySQL,它有一个带有' company_id'的用户表。在它的领域。所以我做了一个测试并将用户输入的公司名称记录在我的表单上并保存,如果我调试它保存得很好并且让我回到properties部分中保存数据的新ID。

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

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

我可以发布其他细节,如果需要,但这个代码刚刚被编辑了一些蛋糕烘焙。我确实将公司的输入表单更改为$this->Form->input('company.name');

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

那么我做错了什么?

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

1 个答案:

答案 0 :(得分:1)

好吧,好像我已经解决了我自己的问题,但不确定它是否是最好的解决方案。因此,如果其他人有不同的方法,请告诉我。

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

所以我的代码目前正在

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

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

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

 }

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

谢谢,