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。
我正在浏览 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。