Как создать пользовательские функции sql с помощью CakePHP? - PullRequest
2 голосов
/ 13 октября 2010

Рассмотрим пример, приведенный на этой странице, о создании пользовательских функций в SQL, а затем об использовании пользовательской функции в предложении WHERE .

mysql> CREATE FUNCTION myFunction(in_rep_id INT)
    ->      RETURNS INT
    ->      READS SQL DATA
    -> BEGIN
    ->      DECLARE customer_count INT;
    ->
    ->      SELECT COUNT(*)
    ->           INTO customer_count
    ->        FROM employee
    ->       WHERE id=in_rep_id;
    ->
    ->      RETURN(customer_count);
    ->
    -> END$$

mysql> SELECT id,myFunction(id)
    ->   FROM employee
    ->  WHERE myFunction(id)>0
    ->  ORDER BY myFunction(id) desc;

Как выполнить репликациюэто с помощью CakePHP?Нужно ли определять функцию как часть модели CakePHP?Или есть способ выполнить синтаксис CREATE FUNCTION, но изнутри CakePHP?

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 13 октября 2010

Синтаксис CREATE FUNCTION действительно является DDL (язык определения данных) и, как и другой синтаксис DDL (например, CREATE TABLE), не поддерживается Cake.Я подозреваю, что вы можете выполнить функцию через $this->Model->query( 'your sql here' ), хотя мне никогда не приходилось пытаться это делать.* метод, но я сделал предположение, что это то, что вы хотите установить на месте так же, как вы хотите, чтобы стол был на месте еще до того, как он действительно понадобится.

...