在Doctrine中反转布尔值

时间:2013-08-24 19:35:32

标签: symfony doctrine-orm

我正在使用Symfony2和Doctrine查询构建器。有没有一种简单的方法来反转数据库中的布尔值?

我试过这个没有运气:

    $query->update('AppMonitorBundle:Monitor', 'm')
            ->set('m.isActive', '!m.isActive')
            ->where('m.id = :monitor')
            ->setParameter('monitor', $monitor)
            ->getQuery()
            ->execute()
    ;

我相信哪些可以在SQL中运行,但它给了我:

[Syntax Error] line 0, col 51: Error: Expected Literal, got '!'

代替! for NOT给出相同的结果。

1 个答案:

答案 0 :(得分:5)

这是一种解决方法:

->set('m.isActive', '1-m.isActive')

经过测试并为我工作过。

布尔值只是0(表示为假)和1(表示为真)。因此,如果m.isActive为真,则反向值为false (1-1 = 0 = false)。如果m.isActive为假,则反面为true (1-0 = 1 = true)