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