2011-11-04 44 views
0

我使用cakephp 2.0,我有兩種模式:客戶端和提議。如何僅在cakephp中驗證表單中的第一條記錄?

建議的模型與HasMany客戶端有關; Model Client與使用belongsTo的提案相關;

插入到兩個字段中查看客戶羣但希望驗證提案中僅存在第一個客戶端。

我已經嘗試了幾種方法,但我做不到。

如何執行此驗證?

回答

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 
      ) 
     ) 
    ) 
); 
+0

斯科特感謝您的答覆, 什麼,但是我會做的是驗證只有第一個客戶的登記,並有兩個在我的表單域填寫客戶數據。 我設法通過在模型客戶端中創建自定義驗證來完成此操作。 不過謝謝! –

相關問題