li3 Post :: all (); не возвращает все документы

Я иду через быстрый старт Лита руководство и у меня возникла проблема с отображением всех сообщений, сохраненных в моей базе данных 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

Решение

Я опубликовал это как проблему для github лития, и один из разработчиков помог мне. Проблема не в литии или в коде, а в драйвере PHP-MongoDB, который я использовал.

Версии 1.6.0 и 1.6.1 являются ошибочной версией из того, что сказал мне разработчик, как только я обновил свой драйвер, код начал работать, как и ожидалось, чтобы проверить, какие версии ваших драйверов запускают эту команду на вашем компьютере.

  php --ri mongo

Чтобы обновить мои драйверы, я запустил эту команду:

 sudo pecl install mongo

Обратите внимание, что pecl требует, чтобы груша была установлена ​​на вашем компьютере.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]