Witam,
w symfony zrobiłem relację OneToMany z User i Post
class User implements UserInterface
{
public function __construct()
{
$this->posts = new ArrayCollection();
}
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="user_id")
*/
private $posts;
public function getPosts()
{
return $this->posts;
}
}
<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use DateTimeInterface;
/**
* @ORM\Entity(repositoryClass="App\Repository\PostRepository")
*/
class Post
{
/**
* @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="User", inversedBy="posts")
* @ORM\JoinColumn(nullable=false)
*/
private $user_id;
}
i chcę wyświetlić listę postów co robię w ten sposób
//Controller
public function index(Request $r)
{
$page = 1;
$posts = $this->postRepository->getAllPosts($page, self::POSTS_PAGE_LIMIT);
return $this->render('post/index.html.twig', [
'posts' => $posts,
'totalBlogPosts' => $this->postRepository->getPostCount(),
'page' => $page,
'entryLimit' => self::POSTS_PAGE_LIMIT,
'categories' => $this->categoryRepository->findAll()
]);
}
//Repository
public function getAllPosts($page = 1, $limit = 1)
{
$entityMenager = $this->getEntityManager();
$queryBuilder = $entityMenager->createQueryBuilder();
$queryBuilder
->select('bp')
->from(Post::class, 'bp')
->orderBy('bp.id', 'DESC')
->setFirstResult($limit * ($page - 1))
->setMaxResults($limit);
return $queryBuilder->getQuery()->getResult();
}
public function getPostCount()
{
$em = $this->getEntityManager();
$qB = $em->createQueryBuilder();
$qB->select('count(bp)')
->from(Post::class, 'bp');
return $qB->getQuery()->getSingleScalarResult();
}
i teraz nie wiem jak skorzystać z tej (i innych) relacji abym razem z listą postów otrzymywał dane użytkownika