Question

Dans la doctrine, est-il possible d'ajouter une clause WHERE lors de la récupération d'une propriété d'un objet qui correspond à une relation?

En termes de concept, disons que je veux récupérer uniquement les 3 premiers messages de blog faites dans les 5 derniers jours. Mon objet « blog » a une propriété « messages » qui est défini comme une relation.

Mise à jour ...

Comme certaines personnes éprouvent des difficultés à comprendre ce que je veux dire par une relation:

class Blog extends Doctrine_Record {

       ...

       public function setUp() {

            $this->hasMany("Note as Posts", array(
                "local" => "blog_name",
                "foreign" => "post_id",
                "refClass" => "BlogPost"
            ));

       }
}

Comme vous pouvez le voir, c'est une relation explicite soutenue par la doctrine. Lorsque je fais une recherche utilisant:

     $instanceOfBlog->Posts...........

Je voudrais savoir si je peux ajouter des clauses supplémentaires à ce moment-là.

Était-ce utile?

La solution

Je ne sais pas, je vous suis, mais si c'est ce que je pense alors dans votre classe BlogTable:

public function getRecentPosts()
{
  $qry = self::createQuery("b")
    ->innerJoin("b.Posts p")
    ->where("p.created_at > ?", date("Y-m-d H:i:s", strtotime("-5 days")))
    ->orderBy("p.created_at DESC")
    ->limit(3);

  $results = $qry->execute();
}

est-ce que vous étiez après? Ceci est basé sur le champ de created_at dans l'objet de messages, et assume une relation est définie entre les tables de Blog et Posts.

je peux avoir mal compris votre question tout à fait cependant: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top