Skip to content

Loading…

DDC-2051: after filtering an association by using ->matching(Criteria) original association changes #2731

Closed
doctrinebot opened this Issue · 5 comments

2 participants

@doctrinebot

Jira issue originally created by user iamkoby:

after filtering an association with a criteria it changes so it's not a normal collection and you can't re-filter it.

even after hydrating it you can't filter it.

@doctrinebot

Comment created by iamkoby:

The filtering only works once and only if the database hasn't been queried!

This is a major bug because i would like to filter big collections more than once per request.

@doctrinebot

Comment created by @beberlei:

Can you add a code example? I don't understand what you mean.

@doctrinebot

Comment created by iamkoby:

sure: here's just an example (written right now to demonstrate, not taken from real project, so no criticize pls):

Let's say we have two functions:

  1. function getExpensiveBooks($limit){
    $books = $this->getBooks(); //proxy, haven't queried yet.
    $criteria = Criteria::create()->where(Criteria::expr()->gt('price', '10'))->setMaxResults($limit);
    return $books->matching($criteria);
    }

  2. function getCheapBooks($limit){
    $books = $this->getBooks(); //proxy, haven't queried yet.
    $criteria = Criteria::create()->where(Criteria::expr()->lt('price', '4'))->setMaxResults($limit);
    return $books->matching($criteria);
    }

now, let's say that in the controller i've called:
$expensiveBooks = $author->getExpensiveBooks(3); //will work fine, and the query will be according the criteria.
//but going on and doing this:
$cheapBooks = $author->getCheapBooks(3); //will not work: matching is undefined function.

It appears that doing matching only works on the first time on a certain association.

@doctrinebot

Comment created by iamkoby:

this was due to inconsistent association type in both owner and target (target had one-to-one while owner had one-to-many)

sorry

@doctrinebot

Issue was closed with resolution "Invalid"

@beberlei beberlei was assigned by doctrinebot
@doctrinebot doctrinebot added this to the 2.4 milestone
@doctrinebot doctrinebot closed this
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.