bulton-fr/doctrine_yield 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bulton-fr/doctrine_yield

Composer 安装命令:

composer require bulton-fr/doctrine_yield

包简介

Add a system to yield results with Doctrine

README 文档

README

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 :

<?php

namespace MyBundle\Repository;

use Doctrine\ORM\EntityRepository;
use BultonFr\DoctrineYield\RepositoryYieldTrait;

class MyEntityRepository extends EntityRepository
{
    use RepositoryYieldTrait;
}

And where you want obtain datas (a controller for this example) :

<?php

namespace MyBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class ExampleController extends Controller
{
    public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();

        /** @var Generator $allData */
        $allData = $em
            ->getRepository('MyBundle:MyEntity')
            ->yieldAll()
        ;

        //[...]
    }
}

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.

统计信息

  • 总下载量: 286
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0
  • 更新时间: 2020-02-27

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固