Doctrine2 EntityManager find()方法返回null

时间:2018-10-17 14:24:16

标签: php sql-server laravel laravel-5 doctrine-orm

我有一个奇怪的错误,我不知道如何调试。这是我从数据库加载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,并且可以正常工作。它返回了一行。

注意:我必须将"替换为',但我认为这不是错误,因为可以使用字符串键找到其他记录。

0 个答案:

没有答案