Set::extract
是一个非常强大的功能,可以过滤掉从find方法中检索到的数据。
但是,据我所知,结果不是嵌套的。我的意思是,如果我有一个类似
data =
Array (
0 => array(
'User' => Array (...),
'Profile => Array (...)
)
1 => array(
'User' => Array (...),
'Profile => Array (...)
)
)
我会提取所有用户,比方说User.type =1
,我愿意:
$filtered Set::extract('/User[type=1',$data).
$filtered = Array(
0 => Array (
'User' => Array()
)
)
并且未显示另一个数组Profile。使用extract进行过滤时是否可以获取所有数据?
答案 0 :(得分:1)
您可以在第一个参数内使用/../遍历数组路径。
尝试
$filtered = Set::extract('/User[type=1]/..',$data);
来源:http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::extract
它说它是基本的XPath 2.0语法,其中一个例子使用它。