2011-01-27 19 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; 
} 

と重要なことは、私は例$entryオブジェクトまたは現在のループエントリIDのようfind_first_upload()方法に任意の変数を渡すにしたくないということです。 私が達成したいのは、現在ループしているエントリオブジェクトを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

うん:誰でも同様の問題を持っている場合は、受け入れ答えを無視し、これが正しい方法です!それは私が探していたものです:)ありがとう!しかし、私は1つのことを理解していません。モデルに 'return $ upload-> file'を使って' file'プロパティを表示できますが、** return $ upload'を書き、**ビューで 'echo $ entry-> find_first_upload() - > file'を使うと** 、 'Undefined property:Database_MySQL_Result :: $ file'エラーが表示されます。そんなことがあるものか?私がビューのプロパティを選択することが非常に重要です – mbajur

+0

おそらくあなたは上のオブジェクトにあるので、私は親オブジェクトとそれのそのプロパティではなく、ファイルプロパティが子供の中に記入されていることを意味します – AmirModiri

+0

ansewerがcorect答えをチェックして、私の答えはuperの矢印をクリックしてください;) – AmirModiri

1

が、私は何かをグーグルとこれにつまずきました。

public function find_first_upload() 
{ 
    return $this->uploads->find(); 
} 
関連する問題