我有一个奇怪的错误,我不知道如何调试。这是我从数据库加载User实体的方式:
$user = \EntityManager::getRepository('\App\Entities\Data\User')->find($user_id);
用户ID是字符串。对于某些ID,即使ID是正确的,它也会返回null。甚至更奇怪的是,如果我通过其他属性来检索用户,那么以后便可以找到它:
$test = \EntityManager::getRepository('\App\Entities\Data\User')->findOneBy(["name"=>$user_name);
$user = \EntityManager::getRepository('\App\Entities\Data\User')->find($user_id);
通过这种方式,user
永远不会null
。
如何调试它?我能以某种方式获取由find方法生成的本机查询字符串吗?
修改
我打开了日志记录,因此能够找到查询:
SELECT t0.user_id AS user_id_1, t0.name AS name_2, t0.boss_id AS boss_id_3 FROM x_data_users t0 WHERE t0.user_id = "test_user"
我将其粘贴到Microsoft SQLServer Management Studio,并且可以正常工作。它返回了一行。
注意:我必须将"
替换为'
,但我认为这不是错误,因为可以使用字符串键找到其他记录。