2012-12-05 2 views
1

Je suis nouveau sur CakePHP et j'ai essayé de chercher, mais je ne trouve pas de réponse à cette question.Comment spécifier la plage dans find() cakephp

Pour le dire simplement, je veux que la requête soit quelque chose comme ceci:

SELECT id from posts WHERE id IN (15,18,20); 

Mais je ne sais pas quoi mettre dans l'appel find().

Répondre

1

A partir du modèle, il serait quelque chose comme:

$ids = array(15, 18, 20); 
$posts = $this->find('all', array(
    'conditions' => array(
     'Post.id' => $ids 
    ) 
); 

dans le tableau des conditions, vous pouvez passer un tableau de valeurs à utiliser dans la clause 'IN'

+0

Ceci est exactement ce que je avais besoin. Merci :) –

+1

Avec le niveau par défaut 'recursive', spécifier uniquement' 'id'' pour le nom du champ échouerait probablement si le modèle est lié à d'autres modèles, car le nom du champ serait ambigu. – nIcO

+0

D'accord, j'avais posté juste id dans la requête SQL pour des raisons de simplicité. –

-1

$conditions = array("Post.title" => array("First post", "Second post", "Third post")) $this->find(all,array($conditions));

Cliquez ici si cela fonctionne.

2

Ceci est couvert dans le manuel en ligne de CakePHP au http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions. Il suffit de spécifier un tableau dans votre conditions:

<?php 
$ids = array(1,2,3,4,5,6); 
$results = $this->Post->find('all', array(
    'conditions' => array(
     'Post.id' => $ids 
    ) 
)); 
+0

J'aurais dû y regarder. J'ai tendance à éviter le livre parce que c'est assez confus de temps en temps. Merci :) –