在Cakephp中运行Postgresql函数

时间:2015-03-17 22:41:57

标签: php postgresql cakephp

好的,我试图通过Cakephp AppShell类运行这个postgresql函数。

CREATE OR REPLACE FUNCTION rdcdev.populatetemptables() RETURNS date AS '
DECLARE
    lastSync date;
BEGIN
SELECT INTO lastSync lastsyncdate FROM rdcdev.syncsettings;

INSERT INTO rdcdev.temp_sourcelists (
    SELECT *
    FROM rdcdev.sourcelists
    );
INSERT INTO rdcdev.temp_beamdatas (
    SELECT *
    FROM rdcdev.beamdatas
    WHERE temp_beamdatas.datetime > lastsync
    );
INSERT INTO rdcdev.temp_beams (
    SELECT *
    FROM rdcdev.beams
    WHERE temp_beams.datetime > lastsync
    );  
INSERT INTO rdcdev.temp_logdatas (
    SELECT *
    FROM rdcdev.logdatas
    WHERE temp_logdatas.datetime > lastsync
    );
INSERT INTO rdcdev.temp_paramdatas (
    SELECT *
    FROM rdcdev.paramdatas
    WHERE temp_paramdatas.datetime > lastsync
    );

RETURN lastSync;
END;
' LANGUAGE 'plpgsql';

正如你所看到的那样,我宁愿能够从一个函数调用它,而不是在cakephp调用中单独调用它们。我已经通过命令行调用它来验证函数是否按预期工作,但它似乎不喜欢通过cakephp中的查询调用来调用它:

class SyncShell extends AppShell 
{
    ...blah blah blah
    $SQLcommand = "SELECT rdcdev.populatetemptables();";
    $this->Syncsetting->query($SQLcommand); 
}

Syncsetting只是数据库中的一种数据模型。代码似乎崩溃而没有在cakephp日志中出错,所以我很难弄清楚它为什么不喜欢这样。是因为该函数正在使用SyncSettings之外的表。如果是这样,我需要以某种方式为Cakephp的模型文件夹中的函数创建一个模型类,或者是否有一些特殊的方法来调用Cakephp中的函数,这是我的基本google-foo无法找到的。

0 个答案:

没有答案