symfony — передать объект поля из массива

у меня есть следующий маршрут, который отображает список сообщений
этот список сообщений также показывает категорию сообщения
каждая категория имеет родительскую категорию
я хочу показать в шаблоне ветки родительскую категорию, которой соответствуют все сообщения.
моя неудачная попытка — $ 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();
}
}

0

Решение

Просто предложение. В идеале у вас должна быть одна таблица категорий с собственной ссылкой на нее. Вот как вы можете запросить его. Я представляю, что в таблице 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%}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector