I'm trying to get two tables joined and get a sorted result set from KnpPaginator. Here is my code.
View
<table class="table table-bordered"><tr><th>{{ knp_pagination_sortable(pagination, 'Id', 'c.id') }}</th><th{% if pagination.isSorted('c.name') %} class="sorted"{% endif %}>{{ knp_pagination_sortable(pagination, 'Name', 'c.name') }}</th><th>{{ knp_pagination_sortable(pagination, 'Version', 'c.model.name') }}</th></tr> {% for article in pagination %}<tr {% if loop.index is odd %}class="color"{% endif %}><td>{{ article.id }}</td><td>{{ article.getName }}</td><td>{{ article.model.name }}</td></tr> {% endfor %}</table>
Controller
$em = $this->get('doctrine.orm.entity_manager'); $dql = "SELECT c FROM App\Entity\Car c"; $query = $em->createQuery($dql); $paginator = $this->get('knp_paginator'); $pagination = $paginator->paginate( $query, /* query NOT result */ $request->query->getInt('page', 1)/* page number */, 10/* limit per page */ );
Model model
/** * @ORM\Entity(repositoryClass="App\Repository\ModelRepository") */class Model{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /**
Car model
<?phpnamespace App\Entity;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass="App\Repository\CarRepository") */class Car{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=255, nullable=true) */ private $name; /** * @ORM\Column(type="string", length=255, nullable=true) */ private $code; /** * @ORM\ManyToOne(targetEntity="App\Entity\Model",cascade={"refresh","merge"}, inversedBy="cars") * @ORM\JoinColumn(nullable=false) */ private $model; public function getModel(): ?Model { return $this->model; } public /** * @param $ */function setModel(?Model $model): self { $this->model = $model; return $this; }}
When I get article.model.name inside table body it works. But knp_pagination_sortable(pagination, 'Version', 'c.model.name')
only show this error
There is no such field [model.name] in the given Query component,aliased by [c]
I have removed some unwanted code for better visibility. Thanks