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 用matlab写代码
  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模
  • ¥20 用vivado写数字逻辑实验报告撰写,FPGA实验
  • ¥15 为什么shp文件会有这种小方块?
  • ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
  • ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据