¿Es posible añadir cláusulas WHERE cuando se recuperan las relaciones?
-
02-10-2019 - |
Pregunta
En la doctrina, es posible añadir una cláusula WHERE cuando ir a buscar una propiedad de un objeto que corresponde a una relación?
En términos de concepto, digamos que quiero recuperar sólo los primeros 3 entradas de blog realizados en los últimos 5 días. Mi objeto "blog" tiene una propiedad "mensajes" que se define como una relación.
Actualización ...
A medida que algunas personas están teniendo algunas dificultades para entender lo que quiero decir con una relación:
class Blog extends Doctrine_Record {
...
public function setUp() {
$this->hasMany("Note as Posts", array(
"local" => "blog_name",
"foreign" => "post_id",
"refClass" => "BlogPost"
));
}
}
Como se puede ver, se trata de una relación explícita como el apoyo de la doctrina. Cuando se consulta mediante:
$instanceOfBlog->Posts...........
Me gustaría saber si puedo agregar cláusulas adicionales en ese momento.
Solución
No estoy seguro de que seguir, pero si es lo que pienso entonces en su clase 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();
}
Es eso lo que buscábamos? Esto se basa en el campo created_at
en el objeto de Mensajes, y asume una relación está definida entre las tablas y Blog
Posts
.
Me puede haber entendido mal su pregunta, sin embargo por completo: -)