Search code examples
symfonydoctrinedql

Symfony/doctrine - DQL order by parameter not defined


can anyone tell me why this code does not work :

$sort = 'u.username'; //test

$dql = 'SELECT u, p FROM GPAuthBundle:User u
    JOIN u.profile p
    WHERE ( u.username LIKE :username )
    AND ( u.username LIKE :search OR p.name LIKE :search )
    ORDER BY :sort ASC';

$parameters = array(
    'username' => '%'.$request->query->get('username').'%',
    'search' => '%'.$request->query->get('search').'%',
    'sort' => $sort
);

$query = $manager->createQuery($dql)->setParameters($parameters);

The error :

[Semantical Error] line 0, col 170 near ':sort ASC': Error: ':sort' is not defined.


Solution

  • You can't use in ORDER because setParameters() puts quotes : ORDER BY "myvalue" ASC and you want ORDER BY myvalue ASC

    Use PHP var, example :

    ORDER BY ' . $sort . ' ASC