Содержимое не поможет, отношения не 1: 1 будут извлечены в отдельном запросе, так что это не повлияет на ваш основной запрос.
Например, вы можете создать * 1003 вручную.* присоединяется к таблице объединения и целевой таблицы, которая автоматически отфильтровывает все проекты, у которых нет связанных статей, что-то в этом роде (я более или менее угадал названия, это просто быстрый и грязный пример):
$projects = $this->Project->find('list', array(
'fields' => array('Project.slug', 'Project.name'),
'joins' => array(
array(
'table' => 'press_articles_projects',
'alias' => 'PressArticleProject',
'type' => 'INNER',
'conditions' => array(
'PressArticleProject.project_id = Project.id',
),
),
array(
'table' => 'press_articles',
'alias' => 'PressArticle',
'type' => 'INNER',
'conditions' => array(
'PressArticle.id = PressArticleProject.press_article_id',
),
)
),
'group' => 'Project.id'
));
Или, если вы используете кеш счетчика, то фильтрация по счетчику также будет возможна:
$projects = $this->Project->find('list', array(
'fields' => array('Project.slug', 'Project.name'),
'conditions' => array(
'Project.press_article_count >' => 0
)
));
См. Также