我想知道在ResultSet中阻止null结果的最佳方法是什么。我在蛋糕3.5.13,我正在使用案例,如:
private function addCase($isforeign, $source)
{
$query = $this->Sales->find();
return $query->newExpr()
->addCase(
$query->newExpr()->add([
'Sales.isforeign' => $isforeign,
'Sales.source' => $source
]),
1,
'integer');
}
然后我将addCase函数的返回放在
中(..)
'sourcenationalcount' => $query->func()->sum($this->addCase(0, 1)),
(..)
现在sourcenationalcount可能变为null。什么是返回值0的最佳方法。我找不到func()->ifnull()
。我应该使用formatResult()
吗?
答案 0 :(得分:2)
函数构建器可以创建你想要的任何函数,只需要调用它,构建器的魔术方法调用处理程序将创建一个泛型函数调用,以防没有实现具体方法,即func()->ifnull()
只会工作。
但是,IFNULL
是特定于MySQL / SQLite的,所以为了尽可能保持可移植性,我建议只使用ELSE
个案例,选择0
。NULL
如果条件评估为FALSE
,则代替$query
->newExpr()
->addCase(
[
$query->newExpr()->add([
'Sales.isforeign' => $isforeign,
'Sales.source' => $source
])
],
[1, 0],
['integer', 'integer']
);
。
CASE WHEN (Sales.isforeign = 0 AND Sales.source = 1) THEN 1 ELSE 0 END
这应该生成类似于:
的SQL$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgRevokePermissions['user']['edit'] = true;
$wgRevokePermissions['user']['read'] = true;
另见