ORDER BY на MySQL хранимой функции в CakePHP 3

Я работаю над cakePHP 3. У меня есть пользовательская функция (UDF или Routine) в базе данных mysql. Эта функция принимает параметр и возвращает целочисленное значение. Я должен заказать это возвращаемое значение в предложении 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. ); 

Related of "ORDER BY на MySQL хранимой функции в CakePHP 3"

Я бы предположил, что вы поближе познакомились с документами (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); 

Смотрите также

  • Cookbook> Доступ к базе данных и ORM> Query Builder> Выбор данных

  • API> \ Cake \ Database \ Query :: order ()

  • API> \ Cake \ Database \ Query :: orderAsc ()

  • API> \ Cake \ Database \ Query :: orderDesc ()