Symfony2, Doctrine2, findBy() afin de ne pas travailler
J'ai créé un référentiel pour mes Articles de l'entité et je vais essayer d'obtenir toutes les valeurs commandés by ID DESC. Mais, je vais les faire à chaque fois des valeurs ordonnées par id ASC. Voici mon ArticleRepository.php:
<?php
namespace Acme\BlogBundle\Entity;
use Doctrine\ORM\EntityRepository;
class ArticleRepository extends EntityRepository
{
public function findAll()
{
return $this->findBy(array(), array('id' => 'DESC'));
}
public function findOneBySlug($slug)
{
$query = $this->getEntityManager()
->createQuery('
SELECT p FROM AcmePagesBundle:Article a
WHERE a.slug = :slug
')
->setParameter('slug', $slug);
try {
return $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return false;
}
}
}
Des idées?
Vous devez vous connecter pour publier un commentaire.
La Syntaxe est bonne. Cela devrait fournir des articles commandés.
Tout d'abord, assurez-vous que le @Entité d'annotation est définie par le droit Référentiel de classe au sein de l'Entité Article,
Aussi, si vous souhaitez utiliser des auxiliaires autochtones, vous avez juste à appeler
findBy
de laArticleRepository
au sein de votre contrôleur,repositoryClass()
paramètre dans mon entité. Merci.)
avant;
Vous n'avez pas besoin de créer une requête dans ArticleRepostory.php pour que
Dans votre contrôleur, vous pouvez le faire:
findAll
? Et si vous en avez besoin, en quelques endroits?Ce devrait être le travail:
J'aurais tendance à le faire dans mon référentiel (afin de permettre à l'aide de la même sélectionner DQL dans différentes méthodes dans le référentiel - surtout quand vous avez beaucoup de fetch-jointures notamment):
Cela devrait rendre votre référentiel très flexible, permet différents de la commande dans différentes méthodes (si vous avez besoin de les classer différemment) et de conserver tous les DB code de votre contrôleur.
Symfony
3.3
trouver par ordre d'exemple.À partir de votre contrôleur: