【问题标题】:Binding an array of Instance Types as a parameter for Doctrine DQL绑定实例类型数组作为 Doctrine DQL 的参数
【发布时间】:2017-06-28 00:52:13
【问题描述】:

是否可以将类型数组绑定到 DQL 查询以用于 INSTANCE OF

例如,这是用于按单个指定类型查询实体的 Doctrine DQL。

<?php
$dql = <<<DQL
SELECT o FROM \MyProj\AbstractMyObject AS o 
WHERE o INSTANCE OF :type
DQL;
$q = $em->createQuery($dql);
$q->setParameter(
    'type',
    $em->getClassMetadata(AlphaObject::class);
);
$q->getResult();

将多个类型作为参数绑定到此查询的等效方法是什么?

这是我尝试过的。它不会出错,但也不会返回任何结果。

<?php
$dql = <<<DQL
SELECT o FROM \MyProj\AbstractMyObject AS o 
WHERE o INSTANCE OF (:types)
DQL;
$q = $em->createQuery($dql);
$q->setParameter(
    'types',
    [
        $em->getClassMetadata(AlphaObject::class),
        $em->getClassMetadata(BetaObject::class)
    ]
);
$q->getResult();

【问题讨论】:

    标签: php doctrine dql


    【解决方案1】:

    试试这个:

    <?php
    $dql = <<<DQL
    SELECT o FROM \MyProj\AbstractMyObject AS o 
    WHERE o INSTANCE OF :typeAlpha OR o  INSTANCE OF :typeBeta
    DQL;
    $q = $em->createQuery($dql);
    $q->setParameters([
        'typeAlpha' => $em->getClassMetadata(AlphaObject::class),
         'typeAlpha' => $em->getClassMetadata(BetaObject::class)
        ]
    );
    $q->getResult();
    

    【讨论】:

    • 这显然可行,但我希望有一种方法可以传递数组实例,而不是为一组固定的参数生成 DQL 语句。
    • 我认为你不能随心所欲
    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多