教义配置参考(DoctrineBundle)

编辑本页

教义配置参考(DoctrineBundle)

DoctrineBundle集成了DBAL而且ORMSymfony应用程序中的Doctrine欧宝娱乐app下载地址项目。方法下配置所有这些选项学说输入应用程序配置。

1 2 3 4 5
#显示Symfony定义的默认配置值欧宝娱乐app下载地址PHP bin/console配置:dump-reference原则#显示应用程序使用的实际配置值PHP bin/console debug:config原则

请注意

使用XML时,必须使用http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/doctrine命名空间和相关的XSD模式可在:https://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/doctrine/doctrine-1.0.xsd

DBAL配置

DoctrineBundle支持默认Doctrine驱动程序接受的所有参数,转换为Symfony强制执行的XML或YAML命名标准。欧宝娱乐app下载地址参见教义DBAL文欧宝体育电话档获取更多信息。下面的块显示了所有可能的配置键:

  • YAML
  • XML
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
原则:dbal:dbname:数据库主持人:本地主机端口:1234用户:用户密码:秘密司机:pdo_mysql如果指定了url选项,它将覆盖上面的配置url:mysql: / / db_user: db_password@127.0.0.1:3306 / db_name# DBAL驱动类选项driver_class:App \ DBAL \ MyDatabaseDriver# DBAL驱动选项选项:foo:酒吧路径:' % kernel.project_dir % / var /数据/ data.sqlite”记忆:真正的unix_socket:/ tmp / mysql.sock# DBAL包装类选项wrapper_class:App \ DBAL \ MyConnectionWrapper字符集:utf8mb4日志:“% kernel.debug %”platform_service:App \ DBAL \ MyDatabasePlatformServiceserver_version:“5.7”mapping_types:枚举:字符串类型:自定义:App \ DBAL \ MyCustomType

请注意

server_version选项是在Doctrine DBAL 2.5中添加的,由DoctrineBundle 1.3使用。此选项的值应与您的数据库服务器版本(使用postgres - vpsql - v命令来查找你的PostgreSQL版本和mysql - v获取你的MySQL版本)。

如果正在运行MariaDB数据库,则必须为server_version价值与mariadb -(如。server_version: mariadb-10.4.14).

始终使用引号包装服务器版本号,以便将其解析为字符串而不是浮点数。否则,浮点表示问题会使你的版本被认为是一个不同的数字(例如。5.7将四舍五入为5.6999999999999996447286321199499070644378662109375).

如果您没有定义这个选项,并且还没有创建数据库,您可能会得到PDOException错误,因为Doctrine将尝试自动猜测数据库服务器版本,但没有可用的版本。

如果您想在YAML中配置多个连接,请将它们放在连接键并给它们一个唯一的名称:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
原则:dbal:default_connection:默认的连接:默认值:dbname:欧宝娱乐app下载地址用户:密码:主持人:本地主机server_version:“5.6”顾客:dbname:客户用户:密码:主持人:本地主机server_version:“5.7”

database_connection服务总是指的默认的连接,该连接是定义的第一个连接或通过default_connection参数。

每个连接也可以通过doctrine.dbal。[名字]_connection服务,(名字)连接的名称。在一个控制器可以使用getConnection ()方法和连接的名称:

12 3 4 5 6 7 8 9 10 11 12 13
/ / src /控制器/ SomeController.php使用学说持久性ManagerRegistrySomeController公共函数someMethod(ManagerRegistry学说连接学说->getConnection (“客户”);结果连接->fetchAll ('SELECT name FROM customer');/ /……}}

ORM配置

下面的配置示例显示了ORM解析为的所有默认配置:

12 3 4 5 6 7 8 9 10 11 12
原则:orm:auto_mapping:真正的#标准发行版在调试中将此重写为真,否则为假auto_generate_proxy_classes:proxy_namespace:代理proxy_dir:' % kernel.cache_dir % /理论/ orm /代理的default_entity_manager:默认的metadata_cache_driver:数组query_cache_driver:数组result_cache_driver:数组naming_strategy:doctrine.orm.naming_strategy.default

您可以使用许多其他配置选项来覆盖某些类,但这些选项仅适用于非常高级的用例。

简化配置语法

当您只使用一个实体管理器时,所有可用的配置选项都可以直接放在下面doctrine.orm配置水平。

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
原则:orm:#……query_cache_driver:#……metadata_cache_driver:#……result_cache_driver:#……连接:class_metadata_factory_name:学说\ ORM \ \ ClassMetadataFactory映射default_repository_class:学说\ ORM \ EntityRepositoryauto_mapping:naming_strategy:doctrine.orm.naming_strategy.default加湿器:#……映射:#……dql:#……过滤器:#……

这个缩短的版本通常用于其他文档部分。欧宝体育电话请记住,不能同时使用这两种语法。

缓存的司机

使用任何现有的欧宝娱乐app下载地址Symfony缓存池或定义新的池来缓存Doctrine ORM元素(查询,结果等):

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#配置/包/刺激/ doctrine.yaml框架:缓存:池:doctrine.result_cache_pool:适配器:cache.appdoctrine.system_cache_pool:适配器:cache.system原则:orm:#……metadata_cache_driver:类型:池:doctrine.system_cache_poolquery_cache_driver:类型:池:doctrine.system_cache_poolresult_cache_driver:类型:池:doctrine.result_cache_pool#除了Symfony缓存池,您还可欧宝娱乐app下载地址以使用# 'type: service'选项使用任何服务作为缓存query_cache_driver:类型:服务id:App \ ORM \ MyCacheService

映射配置

所有映射实体的显式定义是ORM惟一必要的配置,您可以控制几个配置选项。映射存在以下配置选项:

类型

之一注释(用于PHP注释;这是默认值),属性(用于PHP属性),xmlymlphpstaticphp.这指定映射使用哪种类型的元数据类型。

看到理论元数据驱动有关此选项的更多信息。

dir

映射或实体文件的绝对路径(取决于驱动程序)。

前缀

此映射的所有实体共享的公共名称空间前缀。此前缀不应与其他已定义映射的前缀冲突,否则Doctrine无法找到您的某些实体。

别名

Doctrine提供了一种方法,可以将实体名称空间别名为更简单、更短的名称,以便在DQL查询或存储库访问中使用。

is_bundle

这个选项是默认情况下,它被认为是一个遗留选项。它只在以前的Symfony版本中有用,当时建议使用包来组织应用欧宝娱乐app下载地址程序代码。

Bundle中的自定义映射实体

教义的auto_mapping特性从实体/每个bundle的目录而且查找其他格式(例如YAML, XML)资源/ config /学说目录中。

如果您将元数据存储在包中的其他地方,您可以定义自己的映射,在那里您可以准确地告诉Doctrine在哪里看看其他的构型。

如果你在用auto_mapping配置,你只需要覆盖你想要的配置。在这种情况下,映射配置的键对应于bundle的名称是很重要的。

例如,假设您决定存储您的XML配置AppBundle的实体@AppBundle /外域/ config /教义目录:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
原则:#……orm:#……auto_mapping:真正的映射:#……AppBundle:类型:xmldir:外域/ config /学说

映射Bundle外部的实体

类中的实体类实体命名空间中的src /实体并给他们一个应用程序别名(所以你可以说应用:文章):

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
原则:#……orm:#……映射:#……SomeEntityNamespace:类型:注释dir:“% kernel.project_dir % / src /实体”is_bundle:前缀:App \实体别名:应用程序

检测映射配置格式

如果类型在bundle配置未设置时,DoctrineBundle将尝试检测该bundle的正确映射配置格式。

DoctrineBundle将查找匹配的文件* .orm。(格式)(如。Post.orm.yaml)dir您的映射(如果您正在映射一个包,那么dir相对于bundle的目录)。

该包查找(按此顺序)XML、YAML和PHP文件。使用auto_mapping特性,每个bundle只能有一种配置格式。一旦找到一个bundle,它就会停止。

如果无法确定包的配置格式,则DoctrineBundle将检查是否存在实体包的根目录中的文件夹。如果文件夹存在,Doctrine将退回到使用注释驱动程序。

Dir默认值

如果dir未指定,则其默认值取决于正在使用的配置驱动程序。对于依赖PHP文件的驱动程序(注释,staticphp)它将是(包)/实体.对于使用配置文件(XML, YAML,…)的驱动程序,它将是(包)/资源/ config /教义

如果dir配置和is_bundle配置是真正的时,DoctrineBundle将在dir使用bundle的路径进行配置。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 6.2支持通过苏禄人
欧宝娱乐app下载地址Symfony 6.2支持通过Les-Tilleuls.coop