私はFulePHPとMongoDBを使用していますが、どちらも初めてです。何らかの理由で、コレクション内の複数のMongoDBデータオブジェクトを引き出すことができません。コレクション「personnel」に2つのアイテム「person」があります。データを取得しようとすると、「person」というアイテムが1つしか取得されません。私はその理由を理解しようとしています。モデル内からvar_dump()を実行すると、2つのアイテムが表示されます。コントロールからprint_r()を実行すると、1つのアイテム(最初のアイテム)のみが表示されます。モデルでsizeof($ personal)を実行すると、「1」が表示されました。これは、オブジェクトが1つしかないため意味があります。したがって、foreachループはモデル内で機能しておらず、1回の反復のみを実行すると想定しています。私はこの2日間、なぜこれが発生するのかを理解しようと費やしました。また、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
)
)
コントローラーに到達する前にデータが失われるため、ビューも必要ないと思います。しかし、私がビューを必要とするかどうか私に知らせてください。助けてください。私は単に他に何をすべきかわからない...ありがとう。