2010-10-13 3 views
2

Рассмотрим пример, приведенный на this page about creating user-defined functions in SQL and then using the user-defined function in the WHERE clause.Как создать пользовательские SQL-функции с помощью CakePHP?

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?

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

ответ

2

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

Я должен добавить, что вы действительно можете запустить любой произвольный SQL с помощью метода Model::query(), но я сделал предположение, что это то, что вы хотите, так же, как вы хотите, чтобы таблица была на месте, прежде чем она действительно понадобится.

+0

Большое спасибо Роб. Думаю, мне нужно будет создать функцию, которую я хочу непосредственно в SQL, и выполнить функцию из Cake. – user474710

 Смежные вопросы

  • Нет связанных вопросов^_^