相同的数据由cakephp一次发送两个不同的表

时间:2014-03-25 08:23:05

标签: cakephp

我有两个不同的表一个是客户另一个是用户。在客户和用户之间的所有字段中两个字段是常见的1)用户名2)密码。

当我在客户中添加数据时,这两个字段需要一次保存在两个表中。我能够保存所有客户表数据。这里客户和用户都属于关系。

这是我的客户模型:

public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

这是我的客户控制器添加方法

public function add() {
        if ($this->request->is('post')) {
            $this->Customer->create();
            if ($this->Customer->save($this->request->data)) {
                $this->Session->setFlash(__('The customer has been saved'), 'flash_success');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The customer could not be saved. Please, try again.'), 'flash_fail');
            }
        }
        $users = $this->Customer->User->find('list');
        $this->set(compact('users'));
    }

这是我的两个视野

<?php echo $this->Form->input('password', array('class'=>'input-large'));
                            echo $this->Form->error('password'); ?>                 


<?php echo $this->Form->input('firstname', array('class'=>'input-large'));
                          echo $this->Form->error('firstname'); ?>

我的用户控制器添加方法

public function add() {
    if ($this->request->is('post')) {
        $this->User->create();
        $this->request->data['User']['user_type_id'] = $this->request->data['User']['role'];
        if ($this->User->save($this->request->data)) {
            $this->Session->setFlash(__('The user has been saved'), 'flash_success');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.'), 'flash_fail');
        }
    }
    $roles = array('1' => 'Admin', '2'=> 'CallCenter', '6'=> 'Accounts');
    $this->set(compact('roles'));
}

如何在用户表中发送这两个数据?请问有人帮帮我吗?

3 个答案:

答案 0 :(得分:0)

试试这段代码,但是我没有尝试过。

请参阅Manual了解如何保存相关模型

if ($this->request->is('post')) {
        $this->Customer->create();
        $data = $this->request->data;
        $data['User'] = array(
            'username' => $data['Customer']['username'],
            'password' => $data['Customer']['password'],
        );
        if ($this->Customer->saveAssociated($data)) {
            // your code here
        }

答案 1 :(得分:0)

错误的数据库设计,它没有标准化,它需要你复制代码。通过 ONE 用户表修复基本问题,如果注册的人是客户,则根据需要将客户资料与用户记录相关联。

答案 2 :(得分:0)

可能是我知道它的数据库设计不好。我需要针对我的问题的具体解决方案。我的问题是如何在用户表中发送这两个数据,所以让ans

这里我在客户控制器中创建了一个对象

$this->Customer->create();

比我从用户那里获取此值。这是代码

$this->request->data['User']['username']=$this->request->data['Customer']['username'];
$this->request->data['User']['password']=$this->request->data['Customer']['password'];

比我在id

中保存此值

这里是代码

$this->request->data['User']['user_type_id']=2;

比我为用户表保存这些数据

$this->User->save($this->request->data);

现在保存的数据是输出:

enter image description here

在尝试解决之后,我的知识可能会受到限制。谢谢。