2

考虑本页给出的关于在 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 模型的一部分吗?或者有没有办法在 CakePHP 中执行 CREATE FUNCTION 语法?

任何帮助,将不胜感激。

4

1 回答 1

2

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

我应该补充一点,您实际上可以通过该Model::query()方法运行任何任意 SQL,但我假设这是您想要的东西,就像您希望在实际需要之前放置一个表一样。

于 2010-10-13T16:55:01.047 回答