li3 Post::all();不归还所有文件

li3 Post::all(); not returning all documents

我正在浏览 lithum 的快速入门 guide,但在显示保存到我的 Mongo 数据库中的所有 post 时遇到问题。

我已经像这样设置了我的 PostsController:

<?php

 namespace app\controllers;

 use app\models\Posts;

class PostsController extends \lithium\action\Controller {

    public function index(){
            $posts = Posts::all();
            return compact('posts');
    }

    public function add(){
            $post = Posts::create();
            $success = false;

            if($this->request->data && $post->save($this->request->data)){
                    $success = true;
            }
            return compact('post','success');
    }
}
?>

我的添加视图是这样设置的:

  <?=$this->form->create($post); ?>
    <?=$this->form->field('title');?>
    <?=$this->form->field('body', array('type' => 'textarea'));?>
    <?=$this->form->submit('save'); ?>
 <?=$this->form->end(); ?>


 <?php if ($success): ?>
    <p>Post Successfully Saved</p>
 <?php endif; ?>

最后我的索引视图设置如下:

 <?php foreach ($posts as $post): ?>
     <article>
       <h1><?= $post->title ?></h1>
       <p><?= $post->body ?></p>
     </article>
 <?php endforeach; ?>

我的 post 集合中有 4 个测试 post,您可以从这个输出中看到:

 db.posts.find();
 { "_id" : ObjectId("54dd379902a6ce7b088b4567"), "title" : "First    Post", "body" : "Test First Post" }
 { "_id" : ObjectId("54dd3b7e02a6ce7b088b4568"), "title" : "Test Post 2", "body" : "Test Post 2" }
 { "_id" : ObjectId("54dd3cfe02a6ceea0b8b4567"), "title" : "Test Post 3", "body" : "Test Post 3" }
 { "_id" : ObjectId("54dd3d1e02a6cee60b8b4567"), "title" : "Test Post 4", "body" : "Test Post 4" }

然而,当我在网络浏览器中查看我的索引时,它只显示前 3 个而不是最后一个 post。此外,当我使用添加视图添加新的 post,然后再次查看我的索引时,我将看到除刚添加的 post 之外的所有内容。

我是 Lithum 的新手,因此对快速入门指南不熟悉,所以我不确定应该从哪里开始寻找我的问题。在我看来, Posts::all() 调用没有返回它应该返回的所有内容。任何帮助或建议都会很棒。

我将此作为问题发布到锂的 github,其中一位开发人员帮助了我。问题不在于锂或代码,而在于我使用的 PHP-MongoDB 驱动程序。

版本 1.6.0 和 1.6.1 是开发人员告诉我的错误版本,一旦我更新了我的驱动程序,代码就开始按预期工作以检查你的驱动程序是什么版本 运行 你的这个命令盒子.

  php --ri mongo

要更新我的驱动程序,我 运行 这个命令:

 sudo pecl install mongo

请注意,pecl 需要在您的计算机上安装 pear。