2013-05-09 153 views
0

我在cakephp中有一个名为AdminsController的控制器。使用addadmin($ id)函数,如您所见,我尝试将用户角色更新为'admin',并使用其用户标识(变量$ id)在数据库中找到他。用cakephp更新表字段时出错

class AdminsController extends AppController { 

public $helpers = array('Html','Form'); 
var $uses = array('Admin', 'User'); 



public function index() { 
    if(!($this->Auth->user('username') && $this->Auth->user('role') == 'admin')) { 
     throw new NotFoundException(__('Unauthorized access.Please login first.')); 
     $this->redirect(array('controller' => 'users','action' => 'login')); 

    } 
} 



public function addAdmin($id) { 
    $this->loadModel('User'); 
    $this->User->id = $id; 
    $this->User->set('role','admin'); 
    $this->User->save(); 
} 



} 

但这代码不起作用,但在计算器许多其他CakePHP的用户告诉我,这是对的方式做这个.. 你knwo什么可能出错,或者你能帮助我在任何情况下?

谢谢你提前!

+0

您还没有提供足够的信息。请发布您的管理员和用户模型(我认为关系很好),也许数据库表。 – Nunser 2013-05-10 02:11:08

+0

我的用户模型:http://pastie.org/private/v4mgm2qzx0wz0th9xmsr7g 和我的管理模式:http://pastie.org/private/go6oysxkrs7uz5mltay8cw – 2013-05-10 07:34:11

回答

1

试试这个:

public function addAdmin($id) { 
    $this->loadModel('User'); 
    $this->User->id = $id; 
    $this->User->saveField('role','admin'); 
} 

如果不工作,你没有得到正确的ID。

+0

不,这对我很合适:D谢谢你! – 2013-05-10 10:15:41

1

'角色'是您的users表中的字段吗?而'管理'是该领域的有效价值?如果是的话,这应该工作:

$this->User->id = $id; 
$this->User->saveField('role', 'admin'); 

请参阅here。希望这可以帮助。