2011-01-27 99 views
2

我有一個問題,我甚至無法正確命名。這是情況。在方法中訪問父對象

我使用PHP框架(kohana3,但它不是重要的我認爲)編寫一個簡單的cms條目和上傳。的關係是:

Entries -> has_many -> Uploads 
Uploads -> belongs_to -> Entries 

與他們上傳顯示所有條目,我使用這個代碼在視圖文件:

foreach($entries as $entry) 
{ 
    foreach($entry->upload->find_all() as $uploads) 
    { 
      foreach($uploads->find_all() as $upload) 
      { 
       echo $upload->file; 
      } 
    } 
} 

現在我想創建輸入模型的方法稱爲find_first_upload()這將返回第一個上傳的元素。這裏是它未來的使用量:

foreach($entries as $entry) 
{ 
    echo $entry->find_first_upload()->file; 
} 

和最重要的事情是,我不想傳遞任何變量find_first_upload()方法例如像$entry對象或當前循環條目ID。 我想實現的目標是能夠獲得find_first_upload方法中的當前循環條目對象 - 它允許我將foreach放入其中。

你有什麼想法,我怎麼可以編碼?

如果您有任何問題,請隨時在此處詢問。

謝謝, 邁克

回答

1

public function find_first_upload() { 
    $result = 0; 
    foreach($this->upload->find_all() as $uploads) 
     { 
       foreach($uploads->find_all() as $upload) 
       { 
       if(empty($result)) 
        $result = $upload; 
       } 
     } 
     return $result; 
} 
+0

是啊!這就是我一直在尋找:)非常感謝!但我不明白一件事。我可以在模型中使用`return $ upload-> file`顯示`file`屬性,但是如果我在`**'視圖中編寫`return $ upload`並使用`echo $ entry-> find_first_upload() - > file` ** ,我得到`未定義的屬性:Database_MySQL_Result :: $ file`錯誤。這怎麼可能?對於我來說能夠從視圖 – mbajur 2011-01-27 20:39:09

1

對不起重振這個老話題,但我是谷歌搜索的東西,無意中發現了這一點。如果有人有類似的問題,忽略接受的答案,這是正確的方法:

public function find_first_upload() 
{ 
    return $this->uploads->find(); 
}