如何使用CakePHP创建用户定义的sql函数?

时间:2010-10-13 15:57:35

标签: mysql cakephp create-function

考虑this page about creating user-defined functions in SQL and then using the user-defined function in the WHERE clause上给出的例子。

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模型的一部分?或者有没有办法从CakePHP中执行CREATE FUNCTION语法?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

CREATE FUNCTION语法实际上是DDL(数据定义语言),与其他DDL语法(例如CREATE TABLE)一样,Cake不支持。我怀疑,你可以通过$this->Model->query( 'your sql here' ) 执行一个功能,但我从来不需要尝试。

我应该补充一点,你可以通过Model::query()方法真正运行任意SQL,但是我假设这是你想要的东西,就像你想要一张桌子之前一样需要的。