Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 锂框架多重';或';查询中的语句(使用mongoDB)_Php_Mongodb_Lithium - Fatal编程技术网

Php 锂框架多重';或';查询中的语句(使用mongoDB)

Php 锂框架多重';或';查询中的语句(使用mongoDB),php,mongodb,lithium,Php,Mongodb,Lithium,我最近开始使用Lili framework+mongoDB。我想做一个非常简单的查询,其中包含多个or语句。 我在数据库中有文章,其中包含publish\u up和publish\u down字段。我只想获取那些pulbis__向下字段比现在高或为空的记录/文档,并将发布___向上字段比现在低或为空的记录/文档 $items = $article::find('all', array( 'conditions' => array( '$or' => array

我最近开始使用Lili framework+mongoDB。我想做一个非常简单的查询,其中包含多个or语句。 我在数据库中有文章,其中包含publish\u up和publish\u down字段。我只想获取那些pulbis__向下字段比现在高或为空的记录/文档,并将发布___向上字段比现在低或为空的记录/文档

$items = $article::find('all', array(
    'conditions' => array(
        '$or' => array(
            '$gt' => array('publish_down', $mongoDateNow),
            'publish_down' => $mongDateNull
        ),
        '$or' => array(
            '$lt' => array('publish_up', $mongoDateNow),
            'publish_up' => $mongDateNull
        ),
    )
));
当然,这个代码段是错误的,因此第二个or语句覆盖了第一个or语句(因为相同的数组键)。 我试图将它们包装到一个单独的数组中,但给出了一个错误。
有什么想法吗?

我不知道锂,但在PHP中,您可以使用多个$,或者如下所示

$items = $article::find('all', array(
    'conditions' => array(
        '$or' => array(
        array(
            '$gt' => array('publish_down', $mongoDateNow),
            'publish_down' => $mongDateNull
        ),
        array(
            '$lt' => array('publish_up', $mongoDateNow),
            'publish_up' => $mongDateNull
        )
        ),
    )
));

此查询将获取具有(publish\u down>nowpublish\u down=null)和(publish\u up或publish\u up=null)的文章


我认为正确的答案是:

'$and' => array(
    array(
        '$or'=>array(
            array('publish_up' => null),
            array('publish_up' => array('$lt' => $mongoDateNow))
        )
    ),
    array(
        '$or'=>array(
            array('publish_down' => null), 
            array('publish_down' => array('$gt' => $mongoDateNow))
        )
    )
)
'$and' => array(
    array(
        '$or'=>array(
            array('publish_up' => null),
            array('publish_up' => array('$lt' => $mongoDateNow))
        )
    ),
    array(
        '$or'=>array(
            array('publish_down' => null), 
            array('publish_down' => array('$gt' => $mongoDateNow))
        )
    )
)