我正在经历立即快速启动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()调用并没有返回应有的一切。任何帮助或建议都会很棒。
答案 0 :(得分:1)
我把它作为一个问题发布到锂的github上,其中一个开发者帮助了我。问题不在于锂或代码,而在于我使用的PHP-MongoDB驱动程序。
版本1.6.0和1.6.1是开发人员告诉我的错误版本,一旦我更新了我的驱动程序,代码开始按预期工作,检查你的驱动程序在你的盒子上运行此命令的版本。
php --ri mongo
要更新我的驱动程序,我运行了此命令:
sudo pecl install mongo
请注意,pecl需要在您的机器上安装梨。