2012-01-23 18 views
0

私はZend Frameworkの使い方を習得しようとしており、現在次の問題に直面しています。 私は特定の投稿のデータベースからいくつかの情報を読んでいます。私はDatamapperとModelsを使用します。foreachループのない配列内のオブジェクト要素にアクセスする方法

$postMapper = new Application_Model_PostMapper(); 
$post = new Application_Model_Post(); 
$details = $postMapper->find($postID, $post); 
$this->view->postDetail = $details; 

私の見解では、すべての投稿情報を読むためにforeach($ this-> postDetailを$値として使用します)。しかし、私がforeachなしで情報にアクセスできるかどうか、私は今考えていました。私はコントローラの電子メールアドレスだけが必要で、なぜforeachが必要なのかわかりません。しかし、どうすればこの情報にアクセスできますか? Zend_Debugは、以下の結果が付属しています:それは非常に愚かな質問のように聞こえるんが、私はちょうどコントローラ内部のメールアドレスを読み出すための方法を見つけることができません

array(1) { 
[0] => object(Application_Model_Post)#87 (27) { 
["_email":protected] => string(10) "[email protected]" 

。誰かが私にヒントを与えることができますか?

答えて

0

Application_Model_Postクラスでは、プライベート値を取得するためにアクセサメソッドを作成します。

このようにメソッドを作成します。

public function getEmail(){ 
    return $this->_email; 
} 

実際には、datamapperを正しく使用している場合は、すでにこの方法を使用していると思います。あなたはfetchAllのことで、モデル/ DBからデータを取得

+0

こんにちは、はい、自分のモデルにGetとSetメソッドがあります。私はDatamapperで使っています。私はDatamapperからControllerに情報を返し、そこからViewに戻すよりも、ビューでは、私はそれをForeachループで読みました。私が今しようとしているのは、コントローラの内部で電子メールアドレスを取得することだけです。私は\t \t 'foreachの($ $値などの詳細)を使用する場合 \t \t { \t \t \tエコー$値 - > postEmail。 \t \t} '私のコントローラでは動作しますが、実際にはforeachが必要ですか?要素なしで要素にアクセスする方法はありますか? – Luka

+0

$ postMapperはモデルを正しく返します。したがって、$ details-> getEmail()を使用してください。私はそれが明らかなビットであると思うだろう。 – Layke

+0

いいえ、 '$ details-> getEmail()'を使用した場合、次のエラーメッセージ '非オブジェクト上のgetEmail()メンバ関数への呼び出し 'を取得しましたが、 $ post-> getEmail() 'これは意味がありますか?私は、すべての情報が既に読み込まれていて、$ detailsに保存されていることを意味しますが、私はそれを使用していないようです... – Luka

0

は、例えば:

$result = $this->fetchAll($select); 

あなたはこれらの

$result->toArray(); 

//access like array 
$result[0]->some_col_1; 
$result[0]->some_col_2; 

$result[1]->some_col_1; 
$result[1]->some_col_2; 
... 
0

1は動作するはずことができます。

  • $かの詳細が返されます配列:$email = $details['email']; or =$details[0]['email'];
  • $ detailsがオブジェクトを返す場合: $email = $details->email;
関連する問題