doumeng3080 2017-11-01 19:10
浏览 41
已采纳

symfony - 从数组传递字段实体

i have the following route that displays a list of posts this list of posts also shows the category of the post each category has a parent category what i want is to show in a twig template the parent category that each posts corresponds to. my failed attempt is $rnc var which i only did it for a dump test

/**
 * @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 Entity

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\MainCategory", inversedBy="subCat")
 */
private $parentCat;

MainCategory Entity

/**
 * @var
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\CategoryAd", mappedBy="parentCat")
 * @ORM\JoinColumn(name="cat_id", referencedColumnName="id")
 */
protected $subCat;

i only posted the related fields from each Entity i hope i posted enough data. thank in advance

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();
}
}
  • 写回答

1条回答 默认 最新

  • douchi0028 2017-11-02 19:42
    关注

    Just a suggestion. Ideally, you should have had one category table with the self reference to it. This is how you can query for it. I am imagining that in the AdsList table you have reference to the CategoryAds Table.

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\CategoryAd")
     */
    private $categoryAd;
    

    Then, Your controller should look like this

    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,
        ]);
    }
    

    Your twig file should reference to subcategory and main category like this

    {% for post in posts %}
        {{post.categoryAd.name}} {# assuming you have category name #}
        {{post.categoryAd.parentCat.name}} {# assuming you have main category name #}
    {% endfor%}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵