2010-10-13 103 views
2

考慮在this page about creating user-defined functions in SQL and then using the user-defined function in the WHERE clause給出的例子。如何使用CakePHP創建用戶定義的sql函數?

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')您可以執行一個功能,我懷疑,雖然我從來沒有需要嘗試。

我應該補充一點,你可以通過Model::query()方法真正運行任意SQL,但我假設這是你想要的東西,就像你希望在實際需要表格之前一樣。

+0

非常感謝羅布。我想我將不得不直接在SQL中創建我想要的函數,並在Cake中執行該函數。 – user474710 2010-11-01 16:23:29

相關問題