Database 我可以在CakePHP&;中的users表中添加其他字段吗;仍然使用内置的auth方法吗?

Database 我可以在CakePHP&;中的users表中添加其他字段吗;仍然使用内置的auth方法吗?,database,model-view-controller,authentication,cakephp,Database,Model View Controller,Authentication,Cakephp,我使用的是cakePHP,我想在Users表中添加一个名和姓列,但是当我通过字段值firstname&lastname时,这些列总是保留为空,而默认字段填充得很好 是否可以这样做,或者是否需要第二个表来存储这些值 更新代码: 登记表 <?php $session->flash('register'); echo $form->create('User', array('action' => 'register/')); echo '

我使用的是cakePHP,我想在Users表中添加一个名和姓列,但是当我通过字段值
firstname
&
lastname
时,这些列总是保留为空,而默认字段填充得很好

是否可以这样做,或者是否需要第二个表来存储这些值

更新代码:

登记表

        <?php
    $session->flash('register');
    echo $form->create('User', array('action' => 'register/'));
    echo '<h3>Register</h3>';
    echo $form->input('firstname', array('label'=>'First Name'));
    echo $form->input('lastname', array('label'=>'Last Name'));
    echo $form->input('username');
    echo $form->input('email');
    echo '<input class="submitimg" type="image" src="' . $basepath . 'img/btn_submit.gif" alt="Submit" />';
    echo $form->end();
    ?>
MySQL用户表:

CREATE TABLE users (
  id int(11) NOT NULL AUTO_INCREMENT,
  username char(50) DEFAULT NULL,
  firstname varchar(100) NOT NULL,
  lastname varchar(100) NOT NULL,
  password char(50) DEFAULT NULL,
  email varchar(100) NOT NULL,
  created datetime NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY email (email),
  UNIQUE KEY username (username)
)
CREATE TABLE `cake_users` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `username` varchar(100) default NULL,
    `password` varchar(100) default NULL,
    `email` varchar(150) default NULL,
    `firstname` varchar(60) default NULL,
    `lastname` varchar(60) default NULL,
    `priv` int(4) default '0',
    PRIMARY KEY (`id`)
);

感谢您的帮助

在这种情况下,最好将一个单独的表链接到用户表,其中包含您想要保留的所有额外信息。

您肯定可以在用户表上添加其他字段。Auth组件将仅针对该表中的用户名和密码字段进行授权。事实上,如果您仔细阅读Auth组件的属性,就会发现您可以设置蛋糕将使用哪些字段作为用户/传递字段


听起来你的问题是个bug。请发布一些代码和数据库模式,我将进一步帮助您。

这是我的用户表:

CREATE TABLE users (
  id int(11) NOT NULL AUTO_INCREMENT,
  username char(50) DEFAULT NULL,
  firstname varchar(100) NOT NULL,
  lastname varchar(100) NOT NULL,
  password char(50) DEFAULT NULL,
  email varchar(100) NOT NULL,
  created datetime NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY email (email),
  UNIQUE KEY username (username)
)
CREATE TABLE `cake_users` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `username` varchar(100) default NULL,
    `password` varchar(100) default NULL,
    `email` varchar(150) default NULL,
    `firstname` varchar(60) default NULL,
    `lastname` varchar(60) default NULL,
    `priv` int(4) default '0',
    PRIMARY KEY (`id`)
);
我并没有公共用户注册,但我可以创建具有附加字段的用户。这是我在控制器中使用的代码:

function admin_add() {
    if (!empty($this->data)) {
        $this->User->create();
        $this->set('password',$this->Auth->password($this->data['User']['password']));
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The User has been saved', true));
            $this->redirect(array('action'=>'index'));
        } else {
            $this->Session->setFlash(__('The User could not be saved. Please, try again.', true));
        }
    }
}

当然,额外的字段是可能的和正常的。代码中可能有一个隐藏的bug

发布后,您是否尝试调试/输出
$this->data
?您的firstname/lastname值是否显示在数组中?您的模型中是否有阻止保存这些字段的列白名单/黑名单?输入字段在输出HTML中的外观如何?他们应该被命名为
data[User][firstname]
,如果他们不是,那就大错特错了