1

我是 CakePHP 的新手,当我使用 create 函数添加新行时出现此错误:

完整性约束违规:1062 键 'PRIMARY' 的重复条目 '0-0'

每当我使用 Formhelper 保存新数据时,Profile.id 都会设置为 0,但已经有一行具有该 id。User.id 和 profile.id 都设置为自动递增。

我的问题是:如何使用下一个可用的 id 保存数据?

这是模型:

class Profile extends AppModel {
    public $name='Profile';
    public $belongsTo='User';
}

这是控制器中的 add() 函数:

public function add() {
        $this->set('title_for_layout', 'Add Profiles');
        if ($this->request->is('post')) {
            $this->Profile->create();
            if ($this->Profile->save($this->request->data)) {
                $this->Session->setFlash(__('You added a user.'));
                return $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(__('Unable to add user.'));
        }
    }

这是视图:

<?php
echo $this->Form->create('Profile');
echo $this->Form->input('firstname');
echo $this->Form->input('lastname');
echo $this->Form->input('dob', array(
        'dateFormat'=>'DMY',
        'minYear' => date('Y')- 1900,
        'maxYear' => date('Y')- 2013));
echo $this->Form->end('Save Profile');
?>

----编辑 2013 年 10 月 20 日----

数据库架构:

CREATE TABLE `profiles` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `firstname` text NOT NULL,
  `lastname` text NOT NULL,
  `dob` date NOT NULL,
  `pob` varchar(100) NOT NULL,
  `greatest_acc` varchar(500) NOT NULL,
  `fav_food` varchar(200) NOT NULL,
  PRIMARY KEY (`id`,`user_id`),
  UNIQUE KEY `id` (`id`,`user_id`),
  KEY `userid` (`user_id`),
  KEY `userid_2` (`user_id`),
  KEY `user_id` (`user_id`),
  KEY `user_id_2` (`user_id`),
  KEY `user_id_3` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
4

1 回答 1

1

您可以发布您的数据库架构吗?你用什么作为主键?

更新:查看架构后,CakePHP 不支持多列主键。改为使用单个主键,并在需要时索引第二个键。

于 2013-10-19T21:29:12.250 回答