I'm using symfony 4 and doctrine. This is my doctrine query.
public function paginationQueryByAttributes($attributes) { $qb = $this->createQueryBuilder("c"); $qb->select('c'); if (array_key_exists('model_id', $attributes)) { $qb->leftJoin('c.model', 'm.id'); $qb->andWhere('m.id = ' . $attributes['model_id']); unset($attributes['model_id']); } elseif (array_key_exists('brand_id', $attributes)) { $qb->leftJoin('c.model', 'm'); }}
This is my car model.
<?phpnamespace App\Entity;use App\Model\BaseCar;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;use Symfony\Component\Validator\Constraints as Assert;use Swagger\Annotations as SWG;use JMS\Serializer\Annotation\Groups;/** * @ORM\Entity(repositoryClass="App\Repository\CarRepository") * @UniqueEntity("id") */class Car extends BaseCar{ /** * @ORM\ManyToOne(targetEntity="App\Entity\Model",cascade={"refresh","merge"}, inversedBy="cars") * @ORM\JoinColumn(nullable=false) */ protected $model; public function getModel() { return $this->model; } public /** * @param $ */function setModel( $model) { $this->model = $model; return $this; }}
I call repository like this,
$attributes = $request->request->all(); $query = $this->getDoctrine() ->getRepository(Car::class) ->paginationQueryByAttributes($attributes);
I'm getting this error.
[Syntax Error] line 0, col 50: Error: Expected end of string, got '.'
this is the query...
SELECT c FROM App\Entity\Car c LEFT JOIN c.model m.id LEFT JOIN m.brand b WHERE m.id = 2 AND b.id = 1 AND c.code like :code AND c.name like :name