Est-il un moyen de spécifier un ordre par défaut pour une Doctrine 2 modèle?
Dans les Rails (et même dans la Doctrine < 2, IIRC), vous pouvez spécifier un ordre par défaut pour n'importe quel modèle. Par exemple, si vous dites à Rails de toujours commander votre customer
table par name
, Customer.all
aura toujours une liste de clients commandé par name
. Il fait une énorme quantité de sens.
De ce que je comprends, il n'est pas possible de le faire dans la Doctrine 2. De toute évidence, ils ne veulent créer une requête à la place.
Il serait très SÈCHE, logique et pratique option à inclure, et remarquablement stupide fonction pour choisir de laisser de côté, il me semble.
J'espère sincèrement que je me trompe sur cette option n'existant pas, et avant que je pleure moi-même pour dormir ce soir, je voulais vérifier pour voir si peut-être la Doctrine n'ont en réalité un moyen de spécifier un ordre par défaut et je n'en ai pas été capable de le trouver. Quelqu'un peut-il m'éclairer?
- Veuillez mettre à jour votre réponse choisie, vous avez validé le seul qui est totalement faux.
- Fait. Seulement m'a fallu 3 ans.
- Haha! Mieux vaut tard que jamais.
Vous devez vous connecter pour publier un commentaire.
Alors que vous ne semblez pas être en mesure de le faire pour tout un modèle ala Doctrine 1, vous pouvez spécifier la commande comme une annotation sur le côté inverse d'une relation:
Aussi, si vous êtes à la mise en œuvre de l'entité gestionnaire de services, tels que ceux dans SonataNewsBundle, vous pouvez spécifier les valeurs par défaut via arguments optionnels, c'est à dire
Et bien sûr, vous pouvez simplement ajouter une méthode à l'Élément référentiel
Pas de réel besoin de faire une requête dans ce cas. Gardez à l'esprit que la D2 se concentre sur les modèles d'objet avec les relations. Il y a une foule d'enregistrement active des alternatives là-bas.
Pour répondre à votre question: Non.
findBy()
paramètre est utile de connaître. Merci. Malheureusement, ce n'est pas la même chose qu'un ordre par défaut. Aucune de ces solutions de contournement sont presque aussi SEC que ce serait juste pour avoir un ordre par défaut.->findBy(array(),array('field_to_sort_on'))
. Pour corriger cela, il a besoin du champ comme clé du tableau et de la direction que le tableau de la valeur:->findBy(array(),array('field_to_sort_on' => 'ASC'))
findAll...
dans des référentiels (Undefined method 'findAllWithDefaultSort'. The method name must start with either findBy or findOneBy!
)J'ai eu la même question, j'ai trouvé que la substitution de la
findAll()
fonction de votre Référentiel fonctionne assez bien:Un moyen relativement simple d'y parvenir est de remplacer la
findBy
méthode de l'Entité classe de dépôt:Cela ajoute un classement par défaut pour tous les findBy méthodes, et vous permet d'annuler la commande si vous en avez besoin. La même chose peut être fait pour
findOneBy
si nécessaire.Il ressemble pas, il n'y a aucun moyen de spécifier un ordre par défaut dans la Doctrine 2.
findBy du paramètre 1 est le critère de recherche, le paramètre 2 est orderby et semble avoir besoin de prendre de l'ASC (croissant) ou DESC (descendant)