CakePHP的3.2查找查询问题

问题描述:

这是我在CakePHP中3.X查询CakePHP的3.2查找查询问题

public function confirmation($token){ 
    $result = $this->Users->findAllByVerificationCode($token); 
    debug($result->first()); 
    die(); 
} 

如果变量$令牌太长,结果总是null,但如果我长话短说,我得到的结果。

这是怎么回事?

检查数据库模式。可能您的令牌字段对于您要放入的数据来说太小,并且令牌被截断。

+0

我已经检查了我的数据库,我试着用条件查找,我也写了sql查询,但结果总是为空,但是每次我尝试使用简短的'$ token'我都会得到结果。 –

+0

'debug($ result)'显示我的sql查询,everyhing是正确的,'$ token'和'verification_code'这两个值都是相同的。但结果总是'空' –

+0

这仍然听起来像截断问题(假设你正在使用MySQL)。您保存的最长令牌有多久?底层数据库字段的数据类型和长度是多少? – CoderCreative

问题解决了,无论是$tokenverification_code是相同的,两者都是数字的组合,但是它们中的一个是String型的,另一种是一个Integer和CakePHP不会自动转换的类型。

+0

然后它是如何工作的时候令牌很短 –

+0

请在我的回答中看到评论。问题不在于数据类型不同,而在于数据类型不足以保存整个令牌,所以令牌被截断,正如我的答案中所示。 – CoderCreative