2010-08-16 4 views
1

Hey, j'ai un élément qui fait un requestAction pour récupérer les enregistrements triés par date.cakePHP, récupérer des enregistrements après maintenant

Ce que je n'ai pas été en mesure d'entraînement/trouver est de savoir comment le restreindre pour inclure uniquement les enregistrements dont la date est après maintenant.

Par exemple, dans mon élément, je quelque chose de similaire à:

$stuff = $this->requestAction('stuff/get_stuff/sort:my_date/direction:asc');

Comment dois-je m'y limiter à seulement dossiers avec my_date après maintenant?

Leur autre param Je dois ajouter ou est-il quelque chose que je pourrais ajouter dans un appel find(...) dans mon action get_stuff dans le contrôleur stuff?

Un conseil ou un coup de pouce amical dans la bonne direction serait reconnaissant!

+0

Est-ce que 'my_date' est la date de création ou de dernière modification? – NullUserException

+0

Si oui, vous pouvez simplement nommer les champs 'created' ou' modified' et Cake les remplit automagiquement pour vous. – NullUserException

+0

@NullUserException, non, ce n'est pas une création ou une date de modification. –

Répondre

2

Cela dépend vraiment de savoir si ce sera TOUJOURS l'action que vous voulez entreprendre. Mais voici quelques idées.

  1. Vous pouvez ajouter une condition à la requête de découverte: (Complex Find Conditions)

    $this->Stuff->find('all', array('condition' => array('Stuff.my_date >' => date('Y-m-d'))));

  2. Vous pouvez ajouter une méthode de rappel beforeFind au modèle qui met en œuvre le même processus de base. Il va ajouter la condition à chaque requête de recherche pour le modèle donné. (beforeFind)

0

Vous pouvez créer une nouvelle méthode dans le contrôleur pour trouver les dossiers dont vous avez besoin et il suffit d'appeler cela, avec tous les paramètres personnalisés en place dans la découverte. Ensuite, assurez-vous de le vérifier avec if($this->params['requested']) pour vous assurer qu'il ne provient que de votre appel requestAction() et return de l'ensemble de données.

Ensuite, assurez-vous de mettre en cache le résultat, afin de ne pas créer une charge énorme sur votre application en appelant un nouveau cycle de répartition chaque fois que quelqu'un charge la page.

Questions connexes