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

时间:2015-02-13 00:11:21

标签: php mongodb lithium

我正在经历立即快速启动guide,我在显示保存到Mongo数据库的所有帖子时遇到问题。

我已经设置了我的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; ?>

我在帖子集合中有4个测试帖子,您可以从此输出中看到:

 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个而不是最后的帖子。另外,当我使用添加视图添加新帖子然后再次查看我的索引时,我会看到除了刚添加的帖子之外的所有内容。

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

1 个答案:

答案 0 :(得分:1)

我把它作为一个问题发布到锂的github上,其中一个开发者帮助了我。问题不在于锂或代码,而在于我使用的PHP-MongoDB驱动程序。

版本1.6.0和1.6.1是开发人员告诉我的错误版本,一旦我更新了我的驱动程序,代码开始按预期工作,检查你的驱动程序在你的盒子上运行此命令的版本。

  php --ri mongo

要更新我的驱动程序,我运行了此命令:

 sudo pecl install mongo

请注意,pecl需要在您的机器上安装梨。