1

我有一个问题,我需要在没有关联模型的情况下从单个记录中检索单个字段,同时使用使用关联模型的条件?

例子:

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

我想检索第一个Articles.idwhenArticle.category_id=3等。

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

使用Model->find('first', array(conditions))效果很好,除了我还获得了我不需要和不想要的关联数据这一事实,通过禁用使用关联模型比较的能力来限制递归结果。

有什么建议吗?

编辑

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

4

2 回答 2

1

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

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

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

如果您的要求比上述更强,您可以查看绑定模型Containable Behavior。但是根据您的描述,以上是适当的解决方案。这些将是过度的国际海事组织。

于 2011-05-15T19:17:42.757 回答
1

我将使用Model->find()可包含的行为来限制加载哪些关联,并使用 field 参数将结果限制在所需的字段中。

于 2011-05-15T19:20:52.627 回答