【问题标题】:Doctrine OrderBy a PHP FunctionDoctrine OrderBy 一个 PHP 函数
【发布时间】:2017-08-11 08:19:03
【问题描述】:

我有一个实体 city,它有一个 address 属性和一个 PHP 函数 calculate($addess),它接受 city 属性地址并返回一个数字。

我正在尝试使用函数calculate() 的返回来订购我的城市。 Doctrine DQL 可以吗?我该怎么做?

提前感谢您的任何指导

public function calculate($address)
{
    //... 
    return  $number;
}

我不知道这是否存在,但这就是我想要做的:

$qb
    ->select('u')
    ->from('City', 'u')
    ->orderBy(calculate($address), 'ASC')
;

地址需要是城市属性。

【问题讨论】:

标签: symfony doctrine-orm doctrine


【解决方案1】:

我不知道 calculate() 逻辑是做什么的,但你不能把它作为参数给你的班级吗?比将 adress_number 添加到你的数据库和映射中,然后简单地 orderBy 这个参数:

$qb->select('u')
    ->from('City', 'u')
    ->orderBy('u.adressNumber', 'ASC');

希望这会有所帮助。 :)

【讨论】:

  • 但是如果一个地址对应的数字根​​据上下文而变化呢?假设请求城市列表的用户使用某种交通工具。例如,当前是否正在使用自行车或汽车可能会改变城市的“编号”(即排序顺序),在这种情况下,基于自行车友好的道路网络。
  • 这是不可能的,因为 caluclate 函数通过地理位置获取用户位置,然后返回用户位置和城市之间的距离。用户不一样,那么距离就不一样了。然后,城市的顺序将从用户到另一个用户位置的不同而不同。 @DenisSt-Michel
猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
相关资源
最近更新 更多