symfony2 和doctrine2 较短的实体名称

2023-12-23

谁应该摆脱在 DQL 查询中使用命名空间?我想为我的包中的所有学说请求分配默认名称空间。在查询生成器中使用默认命名空间也是完美的。我想拥有:

        $dql = "select i
                from MyCompanyMySuperPuperBundle:Issue i
                    inner join MyCompanyMySuperPuperBundle:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";

代替

        $dql = "select i
                from Issue i
                    inner join Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";

完整代码:

namespace MyCompany\MySuperPuperBundle\Entity;

use Doctrine\ORM\EntityRepository;

class IssueRepository extends EntityRepository
{
    public function findStoriesByVersion(\MyCompany\MySuperPuperBundle\Entity\Version $version)
    {
        $dql = "select i
                from MyCompanyMySuperPuperBundle:Issue i
                    inner join MyCompanyMySuperPuperBundle:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";

        return $this->getEntityManager()
                    ->createQuery($dql)
                    ->setParameter(1, array('Epic', 'Story', 'Spike', 'Extra'))
                    ->setParameter(2, $version->getId())
                    ->getResult();
    }
}

UPDATE:

似乎没有办法为每个捆绑包前缀设置默认值,我必须为所有实体使用那个愚蠢的前缀...超过 200 个实体...好吧..让我们设置别名。 它是通过以下方式完成的:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    entity_managers:
        default:
            mappings:
                MyCompanyMySuperPuperBundle:
                    type: annotation
                    alias: xr
    #auto_mapping: true

现在我可以使用 xr 作为前缀

        $dql = "select i
                from xr:Issue i
                    inner join xr:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";

但现在树枝告诉我

在第 7 行 MyCompanyMySuperPuperBundle:Default:index.html.twig 中渲染模板期间引发异常(“未知实体名称空间别名 'UMyCompanyMySuperPuperBundle'。”)。

我不能使用 xr 前缀作为 twig - 它不起作用。你有什么想法?

PS:如果我可以在一个代码中使用两个别名 MyCompanyMySuperPuperBundle - 完整,和 xr - 短,那就完美了...

更新:已解决

有用!现在我可以通过默认全名和非常短的名称访问模型。 twig 使用长命名空间名称,因此它可以工作。

class MyCompanyMySuperPuperBundle extends Bundle
{
    public function boot()
    {
        // implement alias XR for base namespace
        $em = $this->container->get("doctrine.orm.entity_manager");
        $config = $em->getConfiguration();
        $config->addEntityNamespace("XR", "MyCompany\\MySuperPuperBundle\\Entity");
    }
}

Doctrine 中无法拥有默认名称空间,除非您的实体本身根本没有名称空间。但是,您可以做的是指定一个更短的名称空间,例如

$em = $container->get('doctrine.orm.entity_manager');
$config = $em->getConfiguration();
$config->addEntityNamespace('e', 'MyCompany\\Bundle\\Entity');

之后,您可以将您的实体称为“e:Issue”。您可以将其放入预请求事件侦听器或捆绑包的 boot() 方法中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

symfony2 和doctrine2 较短的实体名称 的相关文章

随机推荐

  • Windows批处理文件:查找目录,如果不存在,则创建,然后将文件移动到该目录

    我正在尝试创建一个批处理文件或其他脚本 以将一个文件夹的内容转移到另一个目录中包含其名称的文件夹中 例如 ShowName Episode Title mkv 应移至 movies showname 如果 movies showname 不
  • Powerpoint VBA 撤消

    我有 VBA 代码 可以处理 PowerPoint 文件中的许多幻灯片 部分代码临时调整幻灯片大小 以便我可以以不同的纵横比导出图像 我无法再次调整它们的大小 因为 PowerPoint 永远不会将它们的内容完全恢复到调整大小之前的样子 所
  • PHP:preg_match - “分隔符不能是字母数字或反斜杠”[重复]

    这个问题在这里已经有答案了 有谁知道这个正则表达式有什么问题吗 它在 RegexPal 和 RegExr 等网站上运行良好 但在 PHP 中它给我这个警告并且没有结果 Warning preg match function preg mat
  • 使用 constexpr-if 时出错:在 'constexpr' 之前预期有 '('

    我正在尝试使用 if constexpr 来检查某些内容 但遇到类似错误 constexpr 之前应有 前面没有 if 的 else 到目前为止我检查我的代码没有任何问题 我的编译标志是 g std c 17 main cpp includ
  • mac os x 下进程使用的内存

    给定PID 如何获取进程当前使用的内存 具体来说 我正在寻找 进程使用的私有物理内存 RAM 进程使用的交换空间 但我对映射文件和共享内存不感兴趣 简而言之 我想确定通过终止 PID 将释放多少内存 RAM 和交换 这有用吗 您可以使用ps
  • Django 中的 2 个表单、1 个视图、2 个 SQL 表

    我正在努力了解如何将两个 django 表单中的数据提交到两个单独的数据库表中相同的观点 我只想要一个提交按钮 尽管this https stackoverflow com questions 1395807 proper way to h
  • 一个按钮是否可以有 2 种不同的背景颜色(以及 css 按钮)

    我想要实现的就是这样的事情 你好 hi 位于两种颜色的中间 我让它适用于一种颜色和下面的另一种颜色 但希望颜色在文本中间分开 如果没有人能想出使用 css 的解决方案 我将使用按钮图像 尽量避免使用图像 编辑 当然CSS结果必须跨浏览器 即
  • 最后一个分叉的孩子不会死

    我的主进程分叉了两次 从而创建了两个子进程 这两个孩子是这样相互沟通的 ls more 现在的问题是 第二个孩子永远不会死 这是为什么 管道中的最后一个孩子什么时候真正死亡 删除一个wait 调用显示了预期结果ls more但给出了一些进一
  • 如何使用 SevenZipSharp 创建压缩的 SFX 文件?

    我将了解如何使用 SevenZipSharp 库创建 SFX 首先 我需要说我找不到任何属性来设置压缩级别 等等 当我尝试制作文件的 SFX 时 出现以下错误 Object reference not set to an instance
  • WinForms 中的 WPF 控件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 NET 世界的新手 对 winform 的经验很少 我想知道是否可以将WPF与Winforms混
  • JavaScript 中 FileReader#readEntries 可以读取的目录最大文件数

    我正在创建一个 Chrome 应用程序 我必须读取目录的文件并且我正在使用目录入口API https developer mozilla org en US docs Web API DirectoryEntry and 目录读取器API
  • 如何创建一个程序来列出 Mac 中的所有 USB 设备?

    我对 Mac OS X 操作系统的接触有限 现在我开始使用 Xcode 并正在研究 I O 套件 我需要在命令行工具下在 Xcode 中创建一个程序 以便列出 Mac 系统中连接的所有 USB 设备 请有过这方面经验的人帮帮我 如果有人可以
  • Rails form_for collection_select 忽略 select_tag 接受的远程 ajax 调用

    在让我的表单助手工作之前 我使用以下内容作为我的选择下拉列表 这非常适合调用我的 filter by city js erb 并更新一些其他值 使用
  • Python 3.7:将代理应用于 pip 安装的所有部分,无法维护代理变量

    我有以下问题 我正在使用命令 pip install pyinstaller proxy http webdefence global blackspider com 80 trusted host pypi python org 我遇到的
  • 通过正则表达式进行不区分大小写的有序单词搜索

    我刚开始使用 Perl 中的正则表达式 在尝试了各种在线教程之后 我想要编写一个正则表达式来匹配顺序指定的不区分大小写的单词匹配 我正在尝试确定字符串 A 是否由字符串 B 的单词或单词序列组成 并且我想不区分大小写地执行此操作 例如 如果
  • React 无状态组件 - 性能和 PureRender

    大家都说用stateless组件将提高应用程序性能 然而 我注意到在错误的地方使用无状态组件真的会reduce应用性能 发生这种情况是因为无状态组件总是渲染 即使属性没有改变 如果是stateful我们可以使用的组件PureComponen
  • 如何居中和左对齐图像?

    我正在创建一个图像库 希望图像的容器完全居中在页面上 但图像保持对齐 这是我想要的输出 但是 当我尝试做一个text align center在容器上 id gallery 我得到的图像显示如下 我尝试效仿之前的堆栈溢出问题 CSS 居中块
  • 从 Gradle 开始 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不知道像 Ant Maven 或
  • open()、_open() 和 fopen() 在 MSVC 编译器方面的区别?

    我发现这三个函数都与打开文件有关 open https msdn microsoft com en us library ms235491 v vs 120 aspx 此 POSIX 函数已弃用 使用符合 ISO C 标准的 open 反而
  • symfony2 和doctrine2 较短的实体名称

    谁应该摆脱在 DQL 查询中使用命名空间 我想为我的包中的所有学说请求分配默认名称空间 在查询生成器中使用默认命名空间也是完美的 我想拥有 dql select i from MyCompanyMySuperPuperBundle Issu