我有这个symfony代码,其中检索与我的项目上的博客部分相关的所有类别: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult(); 这工作,但查询包括重复: Test Content Business Test Content 我想在我的查询中使用DISTINCT命令。 我见过的唯一示例要求我写入原始SQL。 我想尽可能避免这种情况,因为我试图保持所有的代码都一样,所以他们都使用Symfony2 / Doctrine提供的QueryBuilder特性。 我尝试添加distinct()到我的查询是这样的: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct('cc.categoryid') ->getQuery(); $categories = $category->getResult(); 但是会导致以下错误: 致命错误:调用未定义的方法Doctrine \ ORM \ QueryBuilder :: distinct() 我如何告诉symfonyselect不同的?
是否可以在两个对象之间设置关联,例如article和comment如下所示: comment.setArticle(10) // 10 is the id of article 自动生成的setArtcicle方法作为参数对象文章当然,但也许有一些技巧做到这一点? 从性能angular度来看,对我来说非常重要 – 我希望避免在我想设置关联时始终进行SQL调用。 在我的情况下,会有很多这样的不必要的查询。
我仍然在学习Symfony2,不明白如何上传文件。 别担心,我已经检查了文件 。 这真的很好,但我的问题没有在任何教程中解释。 我正在寻找如何上传与Symfony2文件,但与所有人都需要的东西(如扩展的约束,基于ID和东西的文件重命名,存储在path中的数据库等)的指导…) 我发现很好的教程,试图混合他们,但没有成功。 每次出现不同的问题:文件在表单上的每一个提交上重新上传(即使文件字段为空),guessExtension不可能使用,tmppath存储在数据库而不是正确的path,文件不移动,不可能在重命名中使用了id,因为id是自动递增的,所以还没有生成)。 所以,我会把一个“标准”的实体,说:Photo.php /** * Photo * * @ORM\Table(name="photo") * @ORM\Entity * @ORM\HasLifecycleCallbacks */ class Photo { // Annotation for the id and auto increment etc private $id; /** * @var string * @Assert\File( maxSize = "3072k", mimeTypesMessage = "Please upload a valid Image") * @ORM\Column(name="image", type="string", length=245, nullable=false) */ […]
我需要使用一个“神奇的发现者”findBy方法使用比较标准(不仅确切的标准)。 换句话说,我需要做这样的事情: $result = $purchases_repository->findBy(array("prize" => ">200")); 这样我就能得到所有奖品在200以上的购物。
我有一个像这样的实体: /** * @Gedmo\Tree(type="nested") * @ORM\Table(name="categories") * @ORM\Entity() */ class Category extends BaseCategory { /** * @ORM\OneToMany(targetEntity="Category", mappedBy="parent") */ protected $children; /** * @Gedmo\TreeParent * @ORM\ManyToOne(targetEntity="Category", inversedBy="children") * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL") */ protected $parent; } 我试图运行这样的查询: $qb = $this->em->createQueryBuilder() ->select('c.parent') ->from('Category', 'c'); $result = $qb->getQuery()->getArrayResult(); 但是,我收到以下错误: [Semantical Error] … Error: Invalid PathExpression. Must be […]
注:如果我想要的是不可能的,一个“不可能”的答案将被接受 在有关inheritance映射的Doctrine 2文档中 ,它说有两种方法: 单表inheritance(STI) 类表inheritance(CTI) 对于这两个,有警告: 如果您使用STI / CTI实体作为多对一或一对一的实体,则不应将inheritance层次上层的其中一个类用作“targetEntity”,而只能使用那些没有子类的类。 否则,Doctrine不能创build这个实体的代理实例,并总是急切地加载实体。 那么,我该如何继续使用基类(抽象)类的关联inheritance ? (并保持当然的performance) 例 一个用户有许多Pet (由Dog或Cat扩展的抽象类)。 我想做的事 : class User { /** * @var array(Pet) (array of Dog or Cat) */ private $pets; } 由于在Doctrine文件中的警告,我应该这样做: class User { /** * @var array(Dog) */ private $dogs; /** * @var array(Cat) */ private $cats; } 这很烦人,因为我失去了inheritance的好处! […]
我设置了一个参数为数组,如http://jmsyst.com/libs/serializer/master/reference/annotations class QuestionAnswer { /** * @JMS\Type("ArrayCollection<Rest\Bundle\Entity\Fixture\QuestionOptions>") * @Groups({"QuestionAnswer"}) */ public $question_options_array ; } 并在另一个类中定义一些选项 class QuestionOptions { /** * @JMS\Type("integer") * @Groups({"get_option"}) */ public $question_option_id ; /** * @JMS\Type("string") * @Groups({"post_option"}) */ public $question_option_description; } 在@ApiDoc我定义 * input={ * "class" = "Rest\BeautyBundle\Entity\Fixture\ProfileQuestionAnswer", * "groups"={"QuestionAnswer", "get_option"}, * }, 更新之前,它运作良好。 但是在composer update只有“QuestionAnswer”组名称起作用,它显示了QuestionOptions类的所有属性。 如何以更新之前的方式提交数组中的属性?
我正在Symfony2框架中工作,想知道什么时候会使用Doctrine用户而不是监听器。 听众对于听众的文件是非常清楚的,然而用户却被掩盖了。 Symfony的食谱条目是相似的。
我在Aib \ PlatformBundle \ Entity \ User.php中有一个实体类 我尝试通过创build表单类没有任何问题 PHP应用程序/控制台教条:生成:formsAibPlatformBundle:用户 现在我已经将名称空间更改为Aib \ PlatformBundle \ Entity \ Identity \ User,但是当我尝试使用我之前说过的任务生成表单时,它说: “类Aib \ PlatformBundle \ Entity \ User不是有效的实体或映射的超类”。 这是文件内容: <?php namespace Aib\PlatformBundle\Entity\Identity; use Doctrine\ORM\Mapping as ORM; /** * Aib\PlatformBundle\Entity\Identity\User * * @ORM\Table() * @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity \UserRepository") */ class User { … 任何想法? symfony2.0.4
有没有什么方便的方法可以连接两个Doctrine ArrayCollection() ? 就像是: $collection1 = new ArrayCollection(); $collection2 = new ArrayCollection(); $collection1->add($obj1); $collection1->add($obj2); $collection1->add($obj3); $collection2->add($obj4); $collection2->add($obj5); $collection2->add($obj6); $collection1->concat($collection2); // $collection1 now contains {$obj1, $obj2, $obj3, $obj4, $obj5, $obj6 } 我只想知道是否可以省去迭代第二个集合,并将每个元素逐个添加到第一个集合中。 谢谢!