我只是意识到,在symfony中,如果您不提及特定字段,则该学说将返回许多垃圾数据,例如调试时间等。我们如何仅使用字段结果来查询所有数据库字段?示例:SELECT * FROM user WHERE username ='abc',则它将仅返回用户表中的所有字段,不包括那些垃圾数据。
$q = $this
->createQueryBuilder('u')
->where('u.username = :username')
->setParameter('username', $username)
->getQuery();
try {
// The Query::getSingleResult() method throws an exception
// if there is no record matching the criteria.
$user = $q->getSingleResult();
var_dump($user);
} catch (NoResultException $e) {
$user = false;
}
上面代码的结果:
我不需要所有这些数据,我只需要数据中的字段。非常感激你的帮助。谢谢你。
那不是垃圾。它可能是整个学说,因为您的对象已经引用了它。您想摆脱学说吗?教义具有许多您通常不会想到的内部机制,因为...好吧...它是ORM,而不仅仅是查询和平面对象。
您从数据库中获得的唯一信息就是所需的数据,而且学说不会执行无用的查询。
我认为您只是不完全了解该理论是如何工作的。实际上,您确实想要整个对象。这是该学说的重点-将数据库映射到对象。那就是“ ORM”的意思。这是主要功能,而不是缺陷。
但是有时您确实只需要纯数据而没有所有原则。你可以得到的。只需将水合作用更改为数组即可(有关水合作用的更多详细信息,请查阅学说文档)。采用
$q->getSingleResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
如果仅选择某些字段而不是整个对象,则默认情况下也会发生这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句