如何使用主义来订购?

How to order by using doctrine?

我曾经使用此命令获取数据,因此第一个数组用于查找变量,第二个数组用于订单。 所以我需要订购特定的 column:name 测试(这是一个有很多列的对象:id/name)但我不知道如何!当我输入 _test.name 时,我得到无法识别的字段

 ->findBy(
          array('_id'     => $id),
          array('_test'  =>'ASC')
          );

class model1
{
 
   
    private $_idModel1;
 
    /**
   *
   *      @ORM\ManyToOne()
   *      @ORM\JoinColumns({
   *      @ORM\JoinColumn(name="id1",
   *      referencedColumnName="id2")
   *      })
   */
    private $_test;

}

您不能使用与 findBy 的关系进行排序,但您可以通过创建查询构建器来进行排序:

$model1Repository->createQueryBuilder('model1')
       ->leftJoin('model1._test', 't')
       ->where('model1._id = :id')
       ->setParameter('id', $id)
       ->orderBy('t.name', 'ASC');

代码尚未经过测试,您应该根据自己的代码进行调整。

它在 model1 class 上创建一个查询生成器,然后将它与您的 ManyToOne 关系连接起来,通过 _id 进行过滤,然后使用 name 字段通过 _test 关系对结果进行排序。

此外,您还需要在@ManyToOne 中声明目标实体 (https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/association-mapping.html#many-to-one-unidirectional)

@ManyToOne(targetEntity=TheNameOfTheTestClass)