mte / doctrineviewsbundle
使用Doctrine生成MySQL视图
dev-master
2018-02-04 13:46 UTC
Requires
- php: >=5.5.9|^7.0
- symfony/doctrine-bridge: ~2.7|~3.0|~4.0
- symfony/framework-bundle: ^3.3|^4.0
This package is not auto-updated.
Last update: 2024-09-20 07:40:33 UTC
README
将Doctrine\ORM\Query转换为Doctrine\DBAL\Schema\View。
提供一个管理类来转换、创建和视图。
配置
mte_doctrine_views:
dbal:
# Example:
default: database_connection
# Prototype
name: ~
生成与DBAL服务"database_connection"关联的服务"mte.doctrine_views.manager.default"。
Information for Service "mte.doctrine_views.manager.default"
============================================================
---------------- ---------------------------------------------------
Option Value
---------------- ---------------------------------------------------
Service ID mte.doctrine_views.manager.default
Class Mte\DoctrineViewsBundle\Doctrine\View\ViewManager
Tags -
Public yes
Synthetic no
Lazy no
Shared yes
Abstract no
Autowired no
Autoconfigured no
---------------- ---------------------------------------------------
用法
获取Doctrine Query Builder查询
class UserRepository extends ServiceEntityRepository { public function createUserViewQuery() { $qb = $this->createQueryBuilder('u'); return $qb->select('u.id') ->addSelect('CONCAT(u.username, \'@\', d.name) AS user') ->addSelect('u.password') ->join('u.domain', 'd') ->where('u.enabled = true') ->andWhere('d.enabled = true') ->getQuery(); } }
使用管理器来处理您的视图
/** * @var App\Repository\UserRepository $userRepository */ $query = $userRepository->createUserViewQuery(); /** * Converts the Doctrine\ORM\Query $query in Doctrine\DBAL\Schema\View * @var Mte\DoctrineViewsBundle\Doctrine\View\ViewManager $viewManager * @see #Configuration */ $view = $viewManager->getViewFromQuery('my_user_view', $query); /** * Creates the given view */ $viewManager->createView($view) /** * Drops the given View if exists * Creates the given view */ $viewManager->dropAndCreateView($view) /** * Converts the Doctrine\ORM\Query $query in Doctrine\DBAL\Schema\View * Creates the given view */ $viewManager->createViewFromQuery('my_user_view', $query) /** * Converts the Doctrine\ORM\Query $query in Doctrine\DBAL\Schema\View * Drops the given View if exists * Creates the given view */ $viewManager->dropAndCreateViewFromQuery(string $name, Query $query)