如何使用主义来订购?
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)
我曾经使用此命令获取数据,因此第一个数组用于查找变量,第二个数组用于订单。 所以我需要订购特定的 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)