2

我正在使用 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 中获取连接。

问候。

4

2 回答 2

0
$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 查询做你想做的事。

于 2013-08-28T12:33:33.217 回答
0
$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 表的实体即可。

于 2013-08-30T13:36:15.517 回答