CakePHP 3中MySQL存储函数的ORDER BY

CakePHP 3中MySQL存储函数的ORDER BY,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我正在研究CakePHP3。我在mysql数据库中有一个用户定义的函数(UDF或例程)。该函数接受一个参数并返回一个整数值。我必须在MySQL order子句中对返回值进行排序 我知道mysql查询可以使用这个函数。i、 e SELECT customer_id FROM table_name ORDER BY routine_name(param1); //param1 is 'customer_id' which I have written after SELECT 但我

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

我知道mysql查询可以使用这个函数。i、 e

SELECT customer_id FROM table_name ORDER BY routine_name(param1);         //param1 is 'customer_id' which I have written after SELECT
但我不知道如何在CakePHP3中构建这个查询。如果有人知道解决办法,我将不胜感激

这是我的CakePHP3代码

$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.
);

我建议您仔细看看(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);