Symfony 单域多域关联上的循环
我的表格如下: 结构->一家公司->媒体 媒体->多通->类型媒体 浏览结构必须输入每种类型的媒体 例如: 照片: img,img,img,img 视频: 视频,视频,视频 我尝试了各种方法,一个for循环在另一个for循环中,但是typeMedia(照片、视频..)永远被复制 这里是代码,但它是错误的Symfony 单域多域关联上的循环,symfony,doctrine-orm,symfony-2.3,Symfony,Doctrine Orm,Symfony 2.3,我的表格如下: 结构->一家公司->媒体 媒体->多通->类型媒体 浏览结构必须输入每种类型的媒体 例如: 照片: img,img,img,img 视频: 视频,视频,视频 我尝试了各种方法,一个for循环在另一个for循环中,但是typeMedia(照片、视频..)永远被复制 这里是代码,但它是错误的 {% for media in structure.media %} {% for type in media.typeMedia.media %} <
{% for media in structure.media %}
{% for type in media.typeMedia.media %}
<h3>{{ type.typeMedia.name }}</h3>
<hr/>
<img src="{{ type.webPath | imagine_filter('thumb', true) }}" />
{% endfor %}
{% endfor %}
{%用于structure.media%}
{media.typeMedia.media%中的类型为%1}
{{type.typeMedia.name}
{%endfor%}
{%endfor%}
我该怎么修理
我需要更改数据库结构?首先,我猜在您的twig code type.webpage中应该是media.webpage?因为网页作为媒体类型的属性没有意义 数据库结构良好。但是,您不能直接按照关系typeMedia.media获取单个结构的结果。typeMedia.media关系将始终为您提供该类型的所有媒体(对于所有结构),无论您如何导航到typeMedia。此外,只要您的外部循环在一组媒体上迭代,只有当该组媒体已按mediaType排序时,才可能从twig按mediaType输出。默认情况下,使用structure.media时并非如此 有多种方法可以做到这一点。一种方法是向结构实体类添加一个方法,以按类型获取媒体。这种方法的优点是,它使您能够从代码库、服务、控制器或细枝中的任何位置按类型获取结构的介质。例如: 在结构实体类中:
public function getMediaByTypeName()
{
$mediaByType = array();
foreach ($this->media as $aMedia)
{
$typeName = $aMedia->getTypeMedia()->getName();
if (!array_key_exists($typeName, $mediaByType)) $mediaByType[$typeName] = array();
$mediaByType[$typeName][] = $aMedia;
}
return $mediaByType;
}
在你的树枝上:
{% for typeName, media in structure.mediaByTypeName %}
<h3>{{ typeName }}</h3>
<hr/>
{% for aMedia in media %}
<img src="{{ aMedia.webPath | imagine_filter('thumb', true) }}" />
{% endfor %}
{% endfor %}
{%用于typeName,结构中的媒体。mediaByTypeName%}
{{typeName}}
{媒体%中的aMedia为%1}
{%endfor%}
{%endfor%}
非常感谢!你是最棒的@用户2126724您可能注意到了,但当我回顾这一点时,我意识到我犯了几个错误,现在我已经纠正了这些错误。