Cakephp FindById只运行一个数字

时间:2014-09-23 09:02:52

标签: cakephp

我尝试为管理做票务系统。所以我有一个User模型如下:

App::uses('AppModel', 'Model');
App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

class User extends AppModel {
  public $name = 'User';
    public $hasMany = 'Ticket';
    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Un nom d\'utilisateur est requis.'
            )
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Un mot de passe est requis.'
            )
        ),
        'role' => array(
            'valid' => array(
                'rule' => array('inList', array('administrateur', 'developpeur', 'technicien', 'commercial')),
                'message' => 'Merci de rentrer un rôle valide',
                'allowEmpty' => false
            )
        )
    );

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $passwordHasher = new SimplePasswordHasher();
            $this->data[$this->alias]['password'] = $passwordHasher->hash(
                $this->data[$this->alias]['password']
            );
        }
        return true;
    }
}

当用户使用用户名和密码登录时,它会进入管理区域,此处门票应由用户列出

这是我的模特我的机票:

App::uses('AppModel', 'Model');

class Ticket extends AppModel {
    public $name = 'List';
    public $tablePrefix = 'tickets_';
    public $belongsTo = array(
                            'User' => array(
                            'foreignKey' => 'username_id'
                        )
   );

}

这是我的控制器Ticket的代码:

class TicketsController extends TicketAppController{

    public function index(){
        $this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
        $this->set('list', $this->Ticket->findById($this->data['Ticket']['username_id']));
    }

}

当我输入findById(5)时,例如我有一个与连接用户关联的正确票证。但是显示用户通过其身份证显示的是什么而不是5?

2 个答案:

答案 0 :(得分:2)

我想这个:

class TicketsController extends TicketAppController{

    public function index(){
        $this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
        $this->set('list', $this->Ticket->findById($this->data['Ticket']['username_id']));
    }

}

应该是这样的:

class TicketsController extends TicketAppController{

    public function index(){
        $this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
        $this->set('list', $this->Ticket->findByUsernameId($this->data['Ticket']['username_id']));
    }

}

标记findByUsernameId。您正在搜索username_id,而不是票证的ID。 得到它了? ;)

答案 1 :(得分:0)

  

您无法更改$this->request->data,因此请尝试使用变量 $ user_id      代替 $ this-> request-> data ['Ticket'] ['username_id']

class TicketsController extends TicketAppController{

    public function index(){
        $user_id = $this->Auth->user('id');
        $this->set('list', $this->Ticket->findById($user_id));
    }

}