单个变量中的 Concataine 2 学说存储库

Concataine 2 doctrine repository in a single variable

作为 SymfonyDoctrine 的初学者,我在实现我想要的目标时遇到了一些困难。

我的数据库中确实有 2 个表:'Prints' 和 'Files'。我有 2 个实体和 2 个存储库。

这两个表很相似,我们在实体中发现几乎相同的变量。

我做了以下代码。当然可以,但我觉得不是很“专业”:

//we are in a new controller 


/**
     * @Route("/Admin/", name="Admin")
     */
    public function AdminAction(){

        $doctrine=$this->getDoctrine();
        $repositoryPrints =$doctrine->getRepository('AppBundle:Prints'); 
        $repositoryFiles =$doctrine->getRepository('AppBundle:Files'); 
    
        $repositoryUser =$doctrine->getRepository('AppBundle:User'); 

        $showPrints = $repositoryPrints->findAll();
        $showFiles = $repositoryFiles->findAll();

        $owners = $repositoryUser->findAll();
        return $this->render('@App/Admin.html.twig', [
            'showPrints'=> $showPrints,
            'showFiles'=> $showFiles,
            'owners'=> $owners
        ]);
    }

这段代码让我在我的 html/twig 文件中做了很多像这样的重复代码:

//The Admin.html.twig file

{% extends 'base.html.twig' %}
{% block body %}
<table class="tableClass">
  <thead>
    <tr>
      <th class="head">Tilte</th>
      <th class="head">Owner</th>
      <th class="head">Size</th>
      <th class="head">Printing Duration</th>
      <th class="head">Due Date</th>
      <th class="headStatus">Status</th>
      {% set break = false %}

      {% for element in showPrints %}
          {% if element.done == 1 and break == false %}
          <th class="head">
            Date of print
          </th>     
            {% set break = true %}
          {% endif %}
        {% endfor %}
       {% for element in showFiles %}
          {% if element.done == 1 and break == false %}
          <th class="head">
            Date of print
          </th>     
            {% set break = true %}
          {% endif %}
        {% endfor %} 
    </tr>
  </thead>

一个快速简单的解决方案是:


$showAll = $repositoryPrints->findAll() + $repositoryFiles->findAll();

而不是这个:

$showPrints = $repositoryPrints->findAll();
$showFiles = $repositoryFiles->findAll();

在我的控制器中。

有谁知道如何轻松做到这一点?

感谢您的关注和潜在的答案。

findAll() 函数将 return 数组。我认为您可以使用 array_merge 函数合并它。

$prints = $repositoryPrints->findAll();
$files = $repositoryFiles->findAll();

$showAll = array_merge($prints, $files);