2014-06-20 79 views
0

在我的數據庫,我有一個柱,其枚舉...列名=枚舉( '列1',列2' , '欄3') ,在我的動作,symfony的1.4和PHP開關殼體

public function executeView_collection_details(sfWebRequest $r) { 
    $collection = Doctrine_Core::getTable('Collections')->findOneById($r->getParameter('id')); 
    $data = array(); 
    $this->setLayout(false); 
    switch($collection->mode_of_payment) { 
     case 'Column1': 
      $obj = $collection->Column1; 
      $data = array(
        //..... 
      ); 
      break; 
     case 'Column2': 
      $obj = $collection->Column2; 
      $data = array(
        //....... 
      ); 
      break; 
     case 'Column3': 
      $obj = $collection->Column3[0]; 
      $data = array(
        //..... 
      ); 
      break; 
    } 

    $this->data = $data; 
} 

我添加了另一個列名術語int(4)。我不想在mysql中添加一個枚舉,因爲用戶將在表單中手動添加它們,我的意思是此列的值將由用戶添加。此列值代表支付天數(40,60,90天)我的問題是,是否可以在此列(術語)的操作中添加switch語句?我只想顯示每個值的行數,例如40天將打印一張固定40行的表格。我嘗試了foreach語句,但失敗了。我試着用google搜索或在互聯網上找到一些例子沒有發現任何人..

+0

你是說你需要一個40,60,90行的HTML表格,它是基於'term'列的值嗎?假設這是正確的,for語句將是創建具有該行數的表的最合理的方式。 – Jestep

+0

@Jester是的,我需要一個基於列值(term)的具有40,60,90行的HTML表格。我可以使用foreach語句顯示一個表格。但是我想要的是每個列值的固定行數,因爲該表中有一個日期列,所以如果他們在某些日期沒有收到任何付款,我想顯示一些字符串,例如「沒有爲這個日期付款」。我將在明天嘗試一個for語句 – rai

回答

0

而不是開關,爲什麼你不去每個領域與getFieldNames()symfony本機功能?

$fn = TablePeer::getFieldNames(); 
$lists = TablePeer::doSelect($c); 
$a = array(); 
$data = array(); 
$v = 0;   
foreach($lists as $list){    
    foreach($fn as $f){ 
     $function = "get$f"; 
     $a[$f] = $list->$function(); 
    } 
    $data[$v] = $a; 
    $v++; 
} 
return $data; 

將TablePeer替換爲您的表名Peer。