Cakephp FindById,只运行一个数字

Cakephp FindById,只运行一个数字,cakephp,Cakephp,我试着做一个行政票务系统。所以我有一个用户模型如下: App::uses('AppModel', 'Model'); App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); class User extends AppModel { public $name = 'User'; public $hasMany = 'Ticket'; public $validate = array( '

我试着做一个行政票务系统。所以我有一个用户模型如下:

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'
                        )
   );

}
这是我的管制员票的代码:

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)时,我有一个正确的票证,该票证与关联的已连接用户一起出现。但是,无论用户通过其id票证显示什么,都可以使用put而不是5?

我认为:

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
。您正在搜索用户名,而不是票证的id。 明白了吗?;)

您无法更改
$this->request->data
,因此请尝试获取变量$user\u id 而不是$this->request->data['Ticket']['username\u id']


而且,我应该将您的字段重命名为
user\u id
,而不是
username\u id
;)在这两种情况下也存在同样的问题:当我尝试var_dump$list时,它返回数组(0){}@user3601175:使用
debug()
-函数调试数据<代码>$this->data[“Ticket”]应该是
$this->request->data[“Ticket”]
。查看
index()
-method中第一条规则和第二条规则之间的差异这很好。它使用$this->request->data[“Ticket”]。谢谢大家。你试过我贴出的答案了吗?
class TicketsController extends TicketAppController{

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

}