如何获得cakePHP Model->字段方法来使用相关模型的条件?

时间:2011-05-15 19:12:27

标签: model cakephp-1.3 field recursive-query model-associations

我遇到问题,我需要从单个记录中检索单个字段,没有相关模型,同时使用使用相关模型的条件?

示例:

Categories {name, id}  
Keywords {name, id}  
Articles {title, text, id, keyword_id, category_id}

我希望在Articles.id等时检索第一个Article.category_id=3

只要条件不使用外部模型,使用Model->field('model.field',array(conditions))就可以正常工作。 ($this->Model->recursive=4无效)。

使用Model->find('first', array(conditions))工作正常,除了我得到了我不需要和不想要的关联数据这一事实,限制了递归结果,禁用了使用关联模型比较的能力。

任何建议?

修改

我的问题,除了糟糕的调试器:-)通过在使用model->read方法时限制递归来解决。 但是,长期可能是使用可包含的行为。

2 个答案:

答案 0 :(得分:1)

find()方法将fields参数作为其选项之一。您还可以设置recursive参数以确保获得适当级别的关系。

根据您的OP,以下内容将在不加入任何关系的情况下检索您想要的内容。

$this->Article->find('first', array('recursive' => -1, 'fields' => array('Article.id'), 'conditions' => array('Article.category_id' => 3)));

如果您的要求比上述要求更强,您可以查看binding modelsContainable Behavior。但根据您的描述,以上是适当的解决方案。这些将是过度的IMO。

答案 1 :(得分:1)

我会使用Model->find() containable行为来限制加载的关联,并使用字段参数将结果限制为所需的字段。