我正在学习CakePHP,因此我正在创建一个简单的博客,以便学习基本功能,这个博客将有表格,包含帖子,用户,用户激活码和分类以及帖子和标签之间的分类关系。
好的,现在的事情是,我已经设法正确设置了所有内容,每次我获取帖子时,都会返回大量数据:
Array
(
[Post] => Array
(
[post_id] => 1
[post_title] => Test 1
[post_nice_name] => test-1
[post_author] => 1
[post_content] => I'm testing this piece of crap.
[post_creation_time] => 2011-11-13 22:50:05
[post_last_modification] => 2011-11-13 22:50:05
[post_allow_comments] => 1
[post_allow_trackback] => 1
[post_display] => 1
)
[User] => Array
(
[user_id] => 1
[user_email] => XX@XXXXXXXXXXx.XX.XX
[user_password] => XXXXXXXXXXXXXXXXXX
[user_creation_time] => 2011-11-13 10:48:10
[user_last_login] => 2011-11-13 22:49:21
[user_birthday] => 1993-08-24 03:00:00
)
[TaxonomyTags] => Array
(
[0] => Array
(
[tag_id] => 1
[tag_name] => test1
[tag_description] => This tag is a test
[PostsTaxonomyTag] => Array
(
[relation_id] => 1
[post_id] => 1
[taxonomy_tag_id] => 1
)
)
[1] => Array
(
[tag_id] => 2
[tag_name] => test2
[tag_description] => This tag is just another test.
[PostsTaxonomyTag] => Array
(
[relation_id] => 2
[post_id] => 1
[taxonomy_tag_id] => 2
)
)
)
)
这些数据真的没必要:我不需要PostsTaxonomyTag数组用于每个标签,也不需要那么多用户的信息,我甚至不需要一些帖子的信息!所以我想知道在传递给视图之前是否有任何方法可以过滤这些信息。
答案 0 :(得分:3)
您可以取消绑定查找功能的模型以防止不需要的数据
$this->Model->unbind(array('hasMany' => array('assocModel')));
我更喜欢使用大多数模型的可包含行为,这会强制您在查找时声明您需要的关系。仔细检查有关该行为的文档。
$this->Model->find(
'all',
array(
'conditions' => array(
//set conditions
),
'contain' => array(
'Model2',
'model3'
)
)
);
您可以在可容纳的集合中设置条件,顺序等,使其能够准确获取您需要的数据。
答案 1 :(得分:1)
...或者您可以在查找选项中使用'recursive' => -1
。