在beforeFind的cakephp 2.x中,我可以检查是否设置了某些条件,!empty($queryData['conditions'][$this->alias.'.field'])
或者获取可以通过轻松检索的字段列表$queryData['fields']
。如何在cakephp 3.x中实现呢?
在之前找到
public function beforeFind(Event $event, Query $query, $options, $primary)
{
}
该options
是空的。在$query
我可以使用添加的条件$query->where(...)
,但如何检查设置哪些字段检索或已经应用什么样的条件?
谢谢
traverse( callable $visitor , array $parts [] )
将遍历每个指定的部分。遍历函数可以使用闭包中的变量或实例变量来聚合结果。此功能通常用作遍历将用于构造查询的所有查询部分的方式。
回调将接收2个参数,第一个是要迭代的查询部分的值,第二个是该部分的名称。
例子:
$query->select(['title'])->from('articles')->traverse(function ($value, $clause) {
if ($clause === 'select') {
var_dump($value);
}
}, ['select', 'from']);
因此,只需调用$ query-> traverse()并提供回调闭包并在其中进行检查即可。另请参见traverseExpressions()。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句