Cakephp使用Set来过滤查询结果

时间:2014-02-26 13:44:00

标签: cakephp

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进行过滤时是否可以获取所有数据?

1 个答案:

答案 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语法,其中一个例子使用它。