【问题标题】:Cakephp save request data accordingCakephp 根据请求保存请求数据
【发布时间】:2014-05-01 16:57:46
【问题描述】:

我的问题是关于如何将表单上请求的数据保存到两个表中并知道我将生成的 user_id。 这些表是链接的,但是第一个表(用户)上有一个字段(id)是自动生成的(序号),我需要将该值插入到第二个表(地址)中。

For example:
In my view.ctp:
     -- Users
                        <div>Name</div>
                        <div><?php echo $this->Form2->input('name'); ?></div>
                        <div>Surname</div>
                        <div><?php echo $this->Form2->input('surname'); ?></div>
    -- Contacts
                        <div>Phone</div>
                        <div><?php echo $this->Form2->input('phone'); ?></div>
                        <div>Address</div>
                        <div><?php echo $this->Form2->input('address'); ?></div>

这是我的数据库:

CREATE TABLE IF NOT EXISTS users (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(50),
    surname varchar(50),
    PRIMARY KEY (id))

CREATE TABLE IF NOT EXISTS contactos (
  id int(10) NOT NULL AUTO_INCREMENT,
  user_id int(10) NOT NULL,
  tipo enum('Entrega', 'Facturação'),
  PRIMARY KEY (id),
  FOREIGN KEY (user_id) REFERENCES users(id));

有什么建议吗?

提前致谢。

【问题讨论】:

    标签: php mysql cakephp


    【解决方案1】:

    如果您的model's 已关联,那么这将自动保存关联的模型数据-

    <div>Name</div>
    <?php echo $this->Form->create('User');?>
    <div><?php echo $this->Form->input('name'); ?></div>
    <div>Surname</div>
    <div><?php echo $this->Form->input('surname'); ?></div>
    
    <div>Phone</div>
    <div><?php echo $this->Form->input('Contact.phone'); ?></div>
    <div>Address</div>
    <div><?php echo $this->Form->input('Contact.address'); ?></div>
    <?php echo $this->Form->end('Save');
    

    【讨论】:

      【解决方案2】:

      查看:

         <div>Name</div>
          <?php echo $this->Form->create('User');?>
          <div><?php echo $this->Form->input('name'); ?></div>
          <div>Surname</div>
          <div><?php echo $this->Form->input('surname'); ?></div>        
          <div>Phone</div>
          <div><?php echo $this->Form->input('Contact.phone'); ?></div>
          <div>Address</div>
          <div><?php echo $this->Form->input('Contact.address'); ?></div>
          <?php echo $this->Form->end('Save');
      

      控制器:

        $this->User->Contact->saveAll($this->request->data); // TO save ABOVE FORM DATA
      

      【讨论】:

        【解决方案3】:

        好的,我了解您的问题。您也可以这样做。首先像这样在第一个表User 中插入值

          $data = array();
          $data['name'] = $this->request->data('name');
          $data['surname'] = $this->request->data('surname');
          $this->User->save($data);
        

        然后像这样获取最后插入的用户ID

        $id = $this->User->getInsertID();
        

        现在插入另一个表

         $contactdata = array();
          $contactdata['user_id'] = $id;
         $contactdata['phone'] = $this->request->data('Contact.phone');
          $contactdata['address'] = $this->request->data('Contact.address');
        
          $this->Contact->save( $contactdata);
        

        这是另一种方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-03
          • 1970-01-01
          • 2021-05-20
          • 2014-11-14
          • 2020-01-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多