gpt4 book ai didi

symfony - 如何在 FormType 中使用 Repository 自定义函数

转载 作者:行者123 更新时间:2023-12-04 18:30:54 26 4
gpt4 key购买 nike

我面临的问题是我必须在包含所有父实体(类别实体)的表单中创建一个选择框。现在我设法做到了:

$builder->add('parent', 'entity', array(
'class' => 'KprCentarZdravljaBundle:Category',
'query_builder' => function($repository) use ($param, $catID) {
return $repository->createQueryBuilder('p')
->where('p.id != :id AND p.parent = :parent')
->setParameters(array('id' => $param, 'parent' => $catID));},
'property' => 'name',
'required' => false,
'attr' => array('data-placeholder' => '--Izaberite Opciju--'),
));

如你所见,我传递了两个参数,第一个是当前的 category.id(一个类别不能是它自己的父级),第二个是父级 ID,因为我想要那个父级的所有子级。这很好用,但它不会给我 parent 的 child 的 child 。我创建了一个带有返回所有子项的递归函数的 CategoryRepository:

<?php

namespace Kpr\CentarZdravljaBundle\Entity;

use Doctrine\ORM\EntityRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Kpr\CentarZdravljaBundle\Entity\Category;

class CategoryRepository extends EntityRepository
{
public function findByParenting($parent)
{
$qb = $this->getEntityManager()->createQueryBuilder();

$qb->add('select', 'cat')
->add('from', 'KprCentarZdravljaBundle:Category cat')
->add('where', 'cat.parent = :parent')
->setParameter('parent', $parent);
// $qb instanceof QueryBuilder
$query = $qb->getQuery();
$results = $query->getResult();
foreach($results as $result){
if($result->getParent()){
$newResult = $this->findByParenting($result->getId());
$results = array_merge($results, $newResult);
}
}
return $results;

}
}

如何在实体字段中使用 findByParenting($parent) 函数?

最佳答案

我发布了答案:Symfony2 choice field not working .谢谢redbirdo .

关于symfony - 如何在 FormType 中使用 Repository 自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16441771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com