Agiletoolkit:Or'ing ands

时间:2014-02-20 20:07:42

标签: atk4

我有一个查询,它给了我一对context_id和class_id。我希望其中一个查询满足其中一个。所以我需要做(co1和cl1)或(co2和cl2)或......

这个给了我一系列的&#39>:

foreach($tscarr as $tsc)
{
  $grid->dq->where('context_id',$tsc['context_id'])->where('class_id',$tsc['class_id']);
}

我从这个页面知道:http://agiletoolkit.org/doc/dsql/where我应该能够做到的。但是在尝试使用或以这种方式时出现错误:

$grid->dq->where($grid->dq->or()->where($grid->dq->where('context_id',$tsc['context_id'])->where('class_id',$tsc['class_id'])));

希望你有一个好主意如何解决这个问题......

1 个答案:

答案 0 :(得分:1)

您可以使用$dsql->orExpr()方法。

Stackoverflow中有多个示例,例如https://stackoverflow.com/a/17958175/1466341,在ATK4 Google网上论坛https://groups.google.com/forum/#!forum/agile-toolkit-devel只搜索或者发送

我想在你的情况下,这样的事情应该有效(未经测试):

$q = $grid->dq;
$or = $q->orExpr();

foreach($tscarr as $tsc)
{
    $or->where(
        $q->andExpr()
            ->where('context_id', $tsc['context_id'])
            ->where('class_id',   $tsc['class_id'])
    );
}
$q->where($or);