我想通过文件链接选择信息,例如在第一行中的数据库中:
文件链接:src/java/son3.wav |字:邮件
db中的secund线:文件链接:src/java/son3.wav |字:SMTP
db中的第三行:文件链接:src/java/son2.wav |字:服务器
我想在html.twig ::
中显示这样 id:1 |文件链接:src/java/son3.wav |字:邮寄,SMTP
ID:2 |文件链接:src/java/son2.wav |字:服务器
以便选择具有相同文件链接的DB中的所有单词,我希望这可以解释我追随的内容。
我正在使用Symfony 3.4,这就是它在我的界面中显示的方式:
https://i.stack.imgur.com/7eq63.jpg
这是我的桌子的图片:
https://i.stack.imgur.com/meyaj.jpg
this is the code of file twig :
<table class="table table-striped">
<thead>
<tr>
<th>Id</th>
<th>File Link</th>
<th>Words</th>
</tr>
</thead>
<tbody>
{% for result in resultats %}
<tr>
<td><a href="{{ path('result', { 'id': result.id }) }}">{{ result.id }}</a></td>
<td>{{ result.indexeFichier.fichierUrl }}</td>
<td>{{ result.indexeMot.motValeur }}</td>
</tr>
{% endfor %}
</tbody>
</table>
这是文件控制器的代码:
public function IndexAction()
{
////////////////////////////////////////////
$em = $this->getDoctrine()->getManager();
$resultats = $em->getRepository('AppBundle:Indexe')->findAll();
return $this->render('userfiles/result.html.twig', array(
'resultats' => $resultats,
));
}
我认为只有使用DQL查询才能做到这一点,后处理才能有所帮助:
公共功能索引(( {
////////////////////////////////////////////
$em = $this->getDoctrine()->getManager();
$tmp = $em->getRepository('AppBundle:Indexe')->findAll();
$tmp2 = [];
foreach ($tmp as $v) {
if (!isset($resultats[$v->getIndexeFichier()->getFichierUrl()])) {
$resultats[$v->getIndexeFichier()->getFichierUrl()] = [];
}
$resultats[$v->getIndexeFichier()->getFichierUrl()][] = $v->indexeMot()->getMotValeur();
}
$resultats = [];
$i = 1;
foreach ($tmp2 as $k=>$v) {
$resultats[] = ['id' => $i++, 'fichierUrl' => $k, 'motValeur' => join(', ', $v)];
}
return $this->render('userfiles/result.html.twig', array(
'resultats' => $resultats,
));
}
和模板
....
{% for result in resultats %}
<tr>
<td><a href="{{ path('result', { 'id': result.id }) }}">{{ result.id }}</a></td>
<td>{{ result.fichierUrl }}</td>
<td>{{ result.motValeur }}</td>
</tr>
{% endfor %}
....
另外,如果您的数据库为mysql,则可以尝试使用GROUP_CONCAT()
函数