单个变量中的 Concataine 2 学说存储库
Concataine 2 doctrine repository in a single variable
作为 Symfony 和 Doctrine 的初学者,我在实现我想要的目标时遇到了一些困难。
我的数据库中确实有 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);
作为 Symfony 和 Doctrine 的初学者,我在实现我想要的目标时遇到了一些困难。
我的数据库中确实有 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);