【问题标题】:ORDER BY on MySQL stored function in CakePHP 3CakePHP 3 中 MySQL 存储函数的 ORDER BY
【发布时间】:2016-01-05 10:13:10
【问题描述】:

我正在开发 cakePHP 3。我在 mysql 数据库中有一个用户定义的函数(UDF 或例程)。该函数接受一个参数并返回一个整数值。我必须在 MySQL order 子句中对返回的值进行排序。

我知道 mysql 查询可以使用该功能。即,

SELECT customer_id FROM table_name ORDER BY routine_name(param1);         //param1 is 'customer_id' which I have written after SELECT

但我不知道如何在 cakePHP 3 中构建此查询。如果有人知道解决方案,将不胜感激。

这是我的 cakePHP 3 代码。

$purchasesTable = TableRegistry::get("Purchases");
$query = $purchasesTable->find();

$sf_val = $query->func()->routine_name(['Purchases.customer_id' => 'literal']);
$query->select();
$query->order(
    //    Routine/Function call should be here as per MySQL query.
    //    So, I think here I have to do something.
);

【问题讨论】:

    标签: php cakephp cakephp-3.0


    【解决方案1】:

    我建议您仔细查看 (API) 文档,那里都提到了。可以将表达式对象传递给Query::order(),如果需要指定方向,还有Query::orderAsc()Query::orderDesc()

    所以

    $expression = $query->func()->routine_name(['Purchases.customer_id' => 'literal']);
    $query->order($expression);
    

    $query->orderAsc($expression);
    

    $query->orderDesc($expression);
    

    另见

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 2011-07-18
      • 1970-01-01
      • 2012-06-08
      • 2022-01-23
      • 2015-02-26
      • 2011-12-22
      • 1970-01-01
      相关资源
      最近更新 更多