у меня есть следующий маршрут, который отображает список сообщений
этот список сообщений также показывает категорию сообщения
каждая категория имеет родительскую категорию
я хочу показать в шаблоне ветки родительскую категорию, которой соответствуют все сообщения.
моя неудачная попытка — $ rnc var, которую я сделал только для теста дампа
/**
* @Route("/agency", name="agency_admin")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function listAction ()
{
$agency = $this->get('security.token_storage')->getToken()->getUser();
$ads = $this->getDoctrine()->getRepository('AppBundle:AdsList');
$ad = $ads->findBy(array('postedBy' => $agency));
$rnx = $this->getDoctrine()->getRepository('AppBundle:CategoryAd');
$rnc = $rnx->findBy(array('parentCat' => $ad));
return $this->render('agency/index.html.twig', [
'user' => $agency,
'posts' => $ad,
]);
}
CategoryAd сущность
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\MainCategory", inversedBy="subCat")
*/
private $parentCat;
Главная категория сущность
/**
* @var
* @ORM\OneToMany(targetEntity="AppBundle\Entity\CategoryAd", mappedBy="parentCat")
* @ORM\JoinColumn(name="cat_id", referencedColumnName="id")
*/
protected $subCat;
я опубликовал только соответствующие поля от каждого субъекта
Я надеюсь, что я опубликовал достаточно данных. заранее спасибо
LE:
class CategoryRepository extends EntityRepository
{
/**
* @param CategoryAd $subCat
* @return CategoryAd[]
*/
public function findAllParentCat(CategoryAd $pc)
{
return $this->createQueryBuilder('ads_category_main')
->andWhere('ads_category_main.subcat = :sc')
->setParameter('sc', $pc)
->getQuery()
->execute();
}
}
Просто предложение. В идеале у вас должна быть одна таблица категорий с собственной ссылкой на нее. Вот как вы можете запросить его. Я представляю, что в таблице AdsList у вас есть ссылка на таблицу CategoryAds.
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\CategoryAd")
*/
private $categoryAd;
Тогда ваш контроллер должен выглядеть так
public function listAction ()
{
$agency = $this->get('security.token_storage')->getToken()->getUser();
$ads = $this->getDoctrine()->getRepository('AppBundle:AdsList');
$ad = $ads->findBy(array('postedBy' => $agency));
return $this->render('agency/index.html.twig', [
'user' => $agency,
'posts'=> $ad,
]);
}
Ваш файл ветки должен ссылаться на подкатегорию и основную категорию, как это
{% for post in posts %}
{{post.categoryAd.name}} {# assuming you have category name #}
{{post.categoryAd.parentCat.name}} {# assuming you have main category name #}
{% endfor%}
Других решений пока нет …