2014-09-04 63 views
-1

我正在使用cakephp進行項目開發。我寫了一個函數來從數據庫中獲取數據並進行求和。我創建了一個名爲user的表格,其中包含高度和重量。我想檢索這些數據,添加它們並返回。這是我寫的功能。在Cakephp中編寫函數時出錯

public function calculate() 
{ 
    $Height=$this->set('user',$this->User->find('first')); 
    $Weight=$this->set('user1',$this->User->find('first')); 
    $sum=($Height+$Weight); 
    $this->set('SUM',$sum); 
} 

在視圖中我寫了下面的代碼。

<div class="page-content"> 
<?php echo $user['User']['weight']; ?> 
<?php echo $user1['User']['height']; ?> 
<?php echo $SUM ?> 
</div 

高度和重量值正在顯示。但總和值顯示爲零。請幫我解決這個問題。

+1

檢查您的控制器中的變量高度和重量,它們不是用戶模型/表格中的高度和重量,這是您在視圖中顯示的高度和重量。 – Abhishek 2014-09-04 05:45:25

+0

嘗試在計算總和之前將其高度和權重變量轉換爲int – 2014-09-04 07:32:02

+1

'set()'方法旨在將數據發送到視圖,因此它不會返回任何內容。 – dhofstet 2014-09-04 07:36:42

回答

0

我找到了一個更好的方法來做上述計算。我在控制器中使用了以下代碼。

public function calculate($id=null) 
    { 
     if (!$this->User->exists($id)) { 
     throw new NotFoundException(__('Invalid user')); 
     } 
     $this->set('user1',$this->User->find('first', array('fields' => ('height'),'conditions' => array('User.id' =>$id)))); 
     $this->set('user',$this->User->find('first', array('fields' => ('weight'),'conditions' => array('User.id' =>$id)))); 
    } 

我的看法與上面提到的類似。這與我工作正常...

+0

您不必使用'find()'兩次,只需使用「height」和「width」作爲「fields」選項的元素。 – dhofstet 2014-09-05 06:02:23

+0

作爲dhofset指出的,你可以在單個數組中添加這兩個字段。所以不需要觸發find查詢兩次。它應該是這樣的:$ this-> set('user',$ this-> User-> find ( '第一',陣列( '條件'=>數組( 'User.id'=> $ ID) '字段'=>數組( '身高', '體重')))); – Ketan 2014-09-05 19:15:09

0

首先,您需要從查找中獲得該字段。 (例如,您可以使用查找條件來過濾de用戶標識)。

$user = $this->User->find('first', array(
    'conditions' => array('User.id' => $id), 
    'fields' => array('User.height', 'User.weight') // fields from your DB 
)); 

所以,你可以做一個pr($user)來查看數據並知道什麼用。

完成並設置爲視圖後。 Cakephp Set

+0

感謝它的工作.. – Roshani 2014-09-04 16:12:34

+0

@Roshani在這裏說謝謝的方式是upvote或接受答案。如果你認爲你的答案更好(即使這是更好的性能方面,它可能導致你的解決方案),然後標記你的,但無論如何,標記一個。 – Nunser 2014-09-10 12:15:26