在Doctrine中反转布尔值

Jam*_*mes 2 symfony doctrine-orm

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

我试过这个没有运气:

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

我认为它可以在SQL中工作,但它给了我:

[Syntax Error] line 0, col 51: Error: Expected Literal, got '!'
Run Code Online (Sandbox Code Playgroud)

代替!对于NOT,给出相同的结果.

小智 5

这是一个解决方法:

->set('m.isActive', '1-m.isActive')
Run Code Online (Sandbox Code Playgroud)

经过测试并为我工作.

布尔值只是0(表示为假)和1(表示为真).所以如果m.isActive是,那么反向值就会出现false (1-1 = 0 = false).如果m.isActive是假,反面会true (1-0 = 1 = true).