私のpreviousの質問に続いて、Iveに新しい問題がありました。私は2つのエンティティを持っています - 著者と本、1人の著者は多くの本を持つことができますが、1つの著者は1人の著者しか持っていません。今、この本には創造の日があります。先月のSymfony2小枝のショーレコード
:私は、各著者は次のように持っているどのように多くの本を示すことができる、私はすべての著者の別途どのように多くの本を表示する必要が同じテーブルでAuthor Books
Author1 5
Author2 7 etc...
が、これに伴い、このように、最後の月に追加されました私のDBで
Author Books Added in last month
Author1 5 2
Author2 7 3 etc..
私は本にマッピングされているすべての著者のエンティティを取得し、これはこのように、著者のためのすべての書籍を取得している:
だから私は小枝datetのいくつかの種類があるはずだと思います先月に追加された本のみを表示するimeフィルタ。私はthisの質問を見ましたが、ここではもう少し詳しく述べますが、主に間隔を扱うのではなく、日付の書式設定に関連しています。どんなアイデアも歓迎します、ありがとう。
EDIT 1コントローラー・コード
<?php
namespace AB\ProjectBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\Common\Collections\Criteria;
use Symfony\Component\HttpFoundation\Response;
use AB\ProjectBundle\Entity\Book;
class AuthorController extends Controller
{
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$userid = $this->container->get('security.context')->getToken()->getUser()->getId();
$entity = $em->getRepository('ABProjectBundle:Authors')->findBy(array('userid'=>$userid));
$books = $entity[0]->getBooks();
$criteria = Criteria::create()
->where(Criteria::expr()->gte("datecreation", "2016-03-15"))
->orderBy(array("datecreation" => Criteria::ASC))
->setFirstResult(0)
->setMaxResults(20)
;
$filtered = $books->matching($criteria);
$twig = 'ABProjectBundle::index.html.twig';
$paramTwig = array(
'authors' => $entity,
'filtered' => $filtered,
);
return $this->render($twig, $paramTwig);
}
私はこれを長さのビューに渡しますが、ビューではゼロだけを取得します。長さを削除すると、著者ごとにDoctrine \ Common \ Collections \ ArrayCollection @ 0000000023bf3ae5000000006ee44d9fが得られます。これが何であるか、どんな考えですか? – Jack
今度は、DateTimeType.phpの53行目にFatalErrorExceptionがあります。 Error:文字列のメンバー関数format()を呼び出しています。 DBの私のadded_date列の型はTimestampで、DateTimeに変更されましたが、それは役に立たなかった。 – Jack
orm.ymlファイルの列のタイプをstringに変更し、問題を解決しましたが、それが正しいかどうかはわかりません。先月の最初の著者が作成した書籍の数が正しく表示され、テーブルに残っているすべての作者に同じ番号が表示されます( – Jack