繁体   English   中英

如何在Doctrine或ORM中实现复杂的SQL查询

[英]How to implement Complex SQL Query in Doctrine or ORM

我正在使用Symphony 2.3.3,并且是Doctrine和ORM的新手。 我读了很多关于学说的实体管理器,DBAL,DQL等的信息。我有以下查询,这些查询是我在SQL中构建的,现在想使用上述任何一种方法(即简单的方法)来实现它。

select su.sensor_id, su.user_id
, usr.contact_id, usr.enabled as user_status
, ctct.Email1, ctct.Email2, ctct.active as contact_status, ctct.contacttype_id
, ctctty.`type` as contact_type, ctctty.active as contact_type_status
from sensor_users su, `Users` usr, contacts ctct, contact_types ctctty
where su.user_id = usr.id
and usr.contact_id = ctct.id
and ctct.contacttype_id = ctctty.id
and usr.enabled = 'Y'
and ctct.active   = 'Y'
and ctctty.active = 'Y'
and su.sensor_id = 123;

对于如何使用它,早日答复是高度赞赏的。 对于DBAL,如何从parameters.yml获取连接。

问候。

$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery(
    'SELECT p
    FROM AcmeStoreBundle:Product p
    WHERE p.price > :price
    ORDER BY p.price ASC'
)->setParameter('price', '19.99');

$products = $query->getResult();

这是来自symfony文档的简单示例。 您可以使用dql查询执行所需的操作。

$query = $em->createQuery(
'SELECT su, usr, ctct, ctctty
FROM Yoursensor_usersClass su
JOIN su.YourfieldToJoinUser usr
JOIN usr.yourFielToJoinContacts ctct
JOIN ctct.yourFieldToJoinContactType ctctty
WHERE usr.enabled = :y
and ctct.active   = :y
and ctctty.active = :y
and su.sensor_id = :nb'
)->setParameter(array(
'y' => 'Y',
'nb' => '123'));

应该是那个 只需替换为管理您的dbs表的实体即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM