如何使用fuelphp(php)从mongodb(对象)中提取数据

时间:2011-12-26 22:01:15

标签: php mongodb fuelphp

我正在使用FulePHP和MongoDB,我对他们都很陌生。出于某种原因,我无法在集合中提取多个MongoDB数据对象。当我尝试提取数据时,我在我的收集“人员”中有两个“人物”项目我只得到一个项目“人物”。我想知道为什么。当我从模型中做var_dump()时,我会看到两个项目出现。当我从控件中执行print_r()时,我只看到一个项目(第一个)出现。当我在模型中使用sizeof($ personnel)时,我看到'1',这是有道理的,因为我只有一个对象。所以我假设我的foreach循环不在模型内部工作,只进行一次迭代。我花了最后两天试图弄清楚为什么会发生这种情况,我花了很多时间在foreach循环上,我不再理解它们,这就是我来到这里的原因。 这是我的模特:

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
            )

    )

我认为我也不需要视图,因为数据在到达控制器之前就会丢失。 但如果我确实需要这个观点,请告诉我。请帮忙。我根本不知道还能做什么...谢谢。

1 个答案:

答案 0 :(得分:2)

你是PHP新手吗?

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

这只返回第一项。只需改为return $personnel;