Как проверить только первую запись из формы в cakephp? - PullRequest
0 голосов
/ 04 ноября 2011

Я использую cakephp 2.0, у меня есть две модели: клиент и предложения.

Предлагаемая модель связана с клиентом HasMany;Модельный клиент связан с предложением, используя ownTo;

Вставлен в два поля для просмотра клиентской базы, но хотел бы проверить наличие только первого клиента в предложении.

I 'Я пробовал несколько способов, но я не могу это сделать.

Как можно выполнить эту проверку?

1 Ответ

1 голос
/ 09 ноября 2011

Я не уверен, что понимаю, что вы подразумеваете под «присутствием только первого клиента в предложении». Это утверждение заставляет меня поверить, что вы ищете первого клиента в упорядоченном списке (а не просто, если есть 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
            )
        )
    )
);
...