Est-il possible d'ajouter des clauses WHERE lors de la récupération des relations?
-
02-10-2019 - |
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à.
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: -)