我正在尝试创建某个哈希。遵循以下路径:
现在这是我的问题。使用Doctrine2,当查询因SQL错误而失败时,它会关闭EntityManager。在我的情况下,没有问题因为我会重试它。
一种解决方案是在哈希已存在的情况下搜索数据库。由于非常非常低的碰撞量(md5)以及尽可能快地完成任务的需要(我可以节省的每一分钱都值得),我想跳过检查。
我认为值得一试的另一个解决方案是clone
实体经理。但是,在实体管理器内部已经传递给内部对象,它们不会被克隆,而是通过引用传递。
第三种解决方案是使用注册表并创建新的实体管理器。但是,在此对象之外,我将没有合适的实体管理器:
我该怎么办才能快速插入?我需要通过实体来完成,我不打算进行平面DQL / SQL查询。
答案 0 :(得分:0)
如何在持久化之前找到唯一的哈希?
do {
$unique_hash = md5(microtime()); // Work out your hash here.
$existing = $repository->findOneByHash($unique_hash);
if (!$existing) {
break; // else carry on until we get one.
}
} while (1);
// Use your unique hash here.