Doctrine $ query-> expr() - > lt with setParameter

时间:2014-11-13 19:39:54

标签: doctrine-orm query-builder

是否可以将“setParameter”与“$ query-> expr() - > lt”?一起使用?我的查询的性质是比较两个日期时间类型列。

这有效

$query
    ->orWhere(
        $query->expr()
            ->lt('p.dateExportedToTranslation', 'p.dateUpdated')
    );

需要进行哪些调整才能实现

$query
    ->orWhere(
        $query->expr()
            ->lt('p.dateExportedToTranslation', ':dateUpdated')
    )
    ->setParameter('dateUpdated', 'p.dateUpdated');

这是整个查询

$query = $this->entityManager
    ->createQueryBuilder()
    ->from('AMDatabase\Entity\TheVerse\PrayersForToday', 'p')
    ->select(
        'p.reference, p.languageIso, p.title, p.prayer,
         p.rssSentence, p.keywords, p.scriptureReferences,
         p.availableResourceWebsites, p.contributedByMembershipReference'
    )
    ->orderBy('p.reference', 'ASC')
    ->setMaxResults('25');

$query
    ->orWhere(
        $query->expr()
            ->eq('p.dateExportedToTranslation', ':date')
    )
    ->setParameter('date', '0000-00-00 00:00:00');

$query
    ->orWhere(
        $query->expr()
            ->lt('p.dateExportedToTranslation', ':dateUpdated')
    )
    ->setParameter('dateUpdated', 'p.dateUpdated');

1 个答案:

答案 0 :(得分:1)

p.updated是一列,而不是您通过参数发送的字符串。如果您要比较两个列(相同或不同的表),您需要第一个(标题为'这适用于')。只有在发送日期值时才需要使用它:

$query
    ->orWhere(
        $query->expr()
            ->eq('p.dateExportedToTranslation', ':date')
    )
    ->setParameter('date', '0000-00-00 00:00:00');