CakePHP 3.0 保存我的关联数据
CakePHP 3.0 Saving My Associated Data
我想做的是建立一个新的用户注册。输入,现在我有一些这样的工作,但似乎无法像新文档所说的那样拯救我的公司。
现在我不确定我是否只是不理解 CakePHP 站点上的文档,但我似乎无法将相关数据保存到新的 table,然后获取其 ID 以放入我的用户table.
所以我的代码
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 有一个用户 table,里面有一个 'company_id' 字段。所以我做了一个测试,并采用了用户在我的表单上输入的公司名称并保存,如果我调试它可以很好地保存并让我在 properties
部分返回我保存数据的新 ID。
但是根据我的阅读,我应该能够将它保存在我的用户保存中?我仍然添加了公司模型,不确定我是否需要它?
但是我调试保存给用户的时候,保存的是用户却没有保存新公司?
如果需要,我可以 post 其他详细信息,但是这段代码只是根据蛋糕烘烤的内容进行了一些编辑。我确实将我公司的输入表单更改为 $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) );
}
这会将新公司名称保存在我的公司 table 中,并将 ID 放入我的用户 table 中。需要进行更多测试,但我想我会 post 这样做是为了 a) 获得一些反馈,看看这是否确实是正确的做法 b) 帮助其他正在考虑这样做的人。
谢谢,
我想做的是建立一个新的用户注册。输入,现在我有一些这样的工作,但似乎无法像新文档所说的那样拯救我的公司。
现在我不确定我是否只是不理解 CakePHP 站点上的文档,但我似乎无法将相关数据保存到新的 table,然后获取其 ID 以放入我的用户table.
所以我的代码
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 有一个用户 table,里面有一个 'company_id' 字段。所以我做了一个测试,并采用了用户在我的表单上输入的公司名称并保存,如果我调试它可以很好地保存并让我在 properties
部分返回我保存数据的新 ID。
但是根据我的阅读,我应该能够将它保存在我的用户保存中?我仍然添加了公司模型,不确定我是否需要它?
但是我调试保存给用户的时候,保存的是用户却没有保存新公司?
如果需要,我可以 post 其他详细信息,但是这段代码只是根据蛋糕烘烤的内容进行了一些编辑。我确实将我公司的输入表单更改为 $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) );
}
这会将新公司名称保存在我的公司 table 中,并将 ID 放入我的用户 table 中。需要进行更多测试,但我想我会 post 这样做是为了 a) 获得一些反馈,看看这是否确实是正确的做法 b) 帮助其他正在考虑这样做的人。
谢谢,