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