Php Doctrine2按特定字符串值排序
例如,我有一个blog posts表,其中包含发布状态(新建、审核、归档) 我如何才能获得状态为“适度”的帖子将放在首位的实体Php Doctrine2按特定字符串值排序,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,例如,我有一个blog posts表,其中包含发布状态(新建、审核、归档) 我如何才能获得状态为“适度”的帖子将放在首位的实体 我知道我可以用PHP和自定义排序解决这个问题,但如何用Doctrine 2解决这个问题?您可以实现自定义DQL函数。这是MySQL的“按字段排序”功能的一个示例: class CustomOrder extends FunctionNode { public $field = null; public $customerOrder = null;
我知道我可以用PHP和自定义排序解决这个问题,但如何用Doctrine 2解决这个问题?您可以实现自定义DQL函数。这是MySQL的“按字段排序”功能的一个示例:
class CustomOrder extends FunctionNode
{
public $field = null;
public $customerOrder = null;
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->field = $parser->StringPrimary()
$parser->match(Lexer::T_COMMA);
$this->secondDateExpression = $parser->StringPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return 'FIELD(' .
$this->field->dispatch($sqlWalker) . ', ' .
$this->customOrder->dispatch($sqlWalker) .
')';
}
}
您可以在DQL查询中这样调用orderbycustomorder('status','new','moderation','archive')
我认为在PHP中进行自定义排序对于您的用例同样有效,除非您在许多地方重用自定义排序函数