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.

¿Fue útil?

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: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top