Download the PHP package bulton-fr/doctrine_yield without Composer
On this page you can find all versions of the php package bulton-fr/doctrine_yield. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bulton-fr/doctrine_yield
More information about bulton-fr/doctrine_yield
Files in bulton-fr/doctrine_yield
Package doctrine_yield
Short Description Add a system to yield results with Doctrine
License LGPL-3.0
Homepage https://github.com/bulton-fr/doctrine_yield
Informations about the package doctrine_yield
Doctrine Yield
A trait to have methods allowed you to yield Doctrine result.
Note: Tested on Doctrine 2.6
only.
But if semver is respected, it should be work on all 2.x version.
Install it
composer require bulton-fr/doctrine_yield
How use it
In your Repository class, add the trait like this :
And where you want obtain datas (a controller for this example) :
How it's work
In the trait, you have the method yieldAll
, it call yieldQuery
with the QueryBuilder
in argument.
We obtain the Query
instance from the QueryBuilder
and call Query::iterate
to loop on each row, and yield each row.
iterate
do a fetchRow
to obtain the next line. So we NOT get all rows to loop and yield on it.
To avoid an override memory from Doctrine, we "detach" each yielded row from the EntityManager.
If you don't want detach the row, you can define the argument $detachRows
to false
.
On yieldAll
method, it's the first method's argument.
Yield with custom queries
You can use the same way of yieldAll
method to yield with a custom query.
At the end of your custom query, instead of return something,
you need to do yield from $this->yieldQuery($qb);
.
Also don't forget to include the trait in your repository.