2011-12-26 23 views
0

私はFulePHPとMongoDBを使用しています。私は両方とも新しいです。何らかの理由で、私はコレクション内で複数のMongoDBデータオブジェクトを取り出すことができません。データを取り出そうとすると、コレクションの「人事」に「人物」という2つのアイテムがありますが、「アイテム」は1つしかありません。理由を理解しようとしています。モデル内からvar_dump()を実行すると、2つの項目が表示されます。コントロールからprint_r()を実行すると、1つの項目(最初の項目)のみが表示されます。モデルでsizeof($ personnel)を実行したとき、私は「1」を見ました。これは、ただ1つのオブジェクトしか持たないので意味があります。だから私は私のforeachループは、モデル内で動作していないと仮定し、1つの反復だけです。なぜこのようなことが起きたのか理解しようとしていましたが、私はもはやforeachループで時間を過ごしました。私はもう理解できなくなりました。ここ は私のモデルである:ここではfuelphp(php)でmongodb(オブジェクト)からデータを取り出す方法

class Model_Home extends Model { 

static function get_results(){ 

    $mongodb = Mongo_Db::instance(); 
    $personnel = $mongodb->get('personnel'); 

    var_dump($personnel); 

    foreach($personnel as $key => $val){ 
     return $val; 
    } 
    } 
} 

は私のコントローラである:

class Controller_Home extends Controller { 


public function action_index() 
{ 
    $data['css'] = Asset::css(array('reset.css','main.css')); 

    $results = Model_Home::get_results(); 


    print_r($results); 

    foreach ($results as $key => $val){ 
     $data[$key] = $results[$key]; 
    } 

    $this->response->body = View::factory('home/index', $data); 
} 
} 

は、CSSの一部を気にしない、それだけで、CSSで引っ張っています。ここ は、モデルの中から、私のvar_dumpです:

object(stdClass)#10 (2) { 
     [0]=> 
     array(5) { 
     ["_id"]=> 
     object(MongoId)#13 (1) { 
      ["$id"]=> 
      string(24) "4ef82a27b238f02ed9000000" 
     } 
     ["cms"]=> 
     array(1) { 
      [0]=> 
      string(8) "Druapl_1" 
     } 
     ["first_name"]=> 
     string(6) "Name_1" 
     ["last_name"]=> 
     string(10) "Lst_Name_1" 
     ["skills"]=> 
     array(3) { 
      [0]=> 
      string(6) "html_1" 
      [1]=> 
      string(5) "css_1" 
      [2]=> 
      string(8) "jQuery_1" 
     } 
     } 
     [1]=> 
     array(5) { 
     ["_id"]=> 
     object(MongoId)#14 (1) { 
      ["$id"]=> 
      string(24) "4ef81a0dcf163c7da3e5c964" 
     } 
     ["cms"]=> 
     array(1) { 
      [0]=> 
      string(8) "Druapl_2" 
     } 
     ["first_name"]=> 
     string(6) "Name_2" 
     ["last_name"]=> 
     string(10) "Lst_Name_2" 
     ["skills"]=> 
     array(3) { 
      [0]=> 
      string(6) "html_2" 
      [1]=> 
      string(5) "css_2" 
      [2]=> 
      string(8) "jQuery_2" 
     } 
     } 
    } 

そしてここでは、私のしますprint_r()は、コントローラから:

 Array 
    (
     [_id] => MongoId Object 
      (
       [$id] => 4ef82a27b238f02ed9000000 
      ) 

     [cms] => Array 
      (
       [0] => Druapl_1 
      ) 

     [first_name] => Name_1 
     [last_name] => Lst_Name_1 
     [skills] => Array 
      (
       [0] => html_1 
       [1] => css_1 
       [2] => jQuery_1 
      ) 

    ) 

私は、データが前に失われるので、私は、あまりにもビューを必要としないと思いますそれはコントローラのように見えます。 しかし、もし私がその見解を必要としているかどうか教えてください。助けてください。私は他に何をすべきか分かりません...ありがとう。

+0

申し訳ありませんが、私の質問は長すぎます。私は徹底的にしようとしているだけで、私はこの質問に最終的に答えてほしい。 – user000001

答えて

2

PHPも初めてですか?

foreach($personnel as $key => $val){ 
    return $val; 
} 

これは、最初の項目のみを返します。代わりにちょうどreturn $personnel;

+0

すべての人々の中で、フレームワークの背後にいる人から助けを受けることは決してありません。ええ、私は$ valの代わりに$人を返すことについて昨日同じ結論に達しました。しかし、今私はデータを見ることができない別の問題を抱えています。私は新しい質問を投稿します、それはやや似ています。もしあなたがもう一度お手伝いできるなら、私はそれを感謝します。 – user000001

関連する問題