Я не уверен, что понимаю, что вы подразумеваете под «присутствием только первого клиента в предложении». Это утверждение заставляет меня поверить, что вы ищете первого клиента в упорядоченном списке (а не просто, если есть 1 или более записей).
Ниже приведены способы, которыми вы могли бы подойти к нему на основе двух разных подходов, которые я могу вывести из вашего вопроса:
1) Вы просто смотрите, есть ли клиент, прикрепленный к предложению.
Вы можете реализовать counter_cache в своей модели клиентов, чтобы вам даже не нужно было смотреть на модель клиента при запросе предложения. Если значение равно нулю, то клиент отсутствует:
public $belongsTo = array(
'proposal' => array(
'counter_cache' => true
)
);
Или вы можете увидеть, если клиентский массив больше нуля после того, как вы нашли свое предложение;
$proposal = $this->Proposal->findById($proposalId);
if(sizeof($proposal['Client'])>0){ //Do this }
2) Найдите «первого» клиента в зависимости от установленного вами порядка.
Сделать обе модели «вместимыми».
public $actsAs = array('Containable');
Тогда в своем заявлении поиска сделайте это ..
$this->Proposal->find(
'first',
array(
'conditions' => array( //conditions for the proposal you want ),
'contain' => array(
'Client' => array(
'order' => array( //order statement to get the first client ),
'limit' => 1
)
)
)
);