Php 当您';我们在一个控制器里

Php 当您';我们在一个控制器里,php,cakephp,Php,Cakephp,我在向模型调用函数时遇到此错误 Database Error Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'singleBlockWeekly' a

我在向模型调用函数时遇到此错误

Database Error

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'singleBlockWeekly' at line 1

SQL Query: singleBlockWeekly 
这是我的控制器

class BlackoutController extends CalendarAppController
{
    var $uses = array('Studio','Blackout','BlackoutRepeatTypeDetails','Calendar.Event');
    var $components = array('Accesscontrol','RequestHandler');
    function event_checker()
    {
        $start_date = $this->request->data['start_date'];
        $end_date = $this->request->data['end_date'];
        $endsOn = $this->request->data['endsOn'];
        $repeatType = $this->request->data['repeatType'];
        $blockType = $this->request->data['blockType'];
        $frequency = $this->request->data['freq'];
        $repeatDays = $this->request->data['repeatDays'];

        #single type 
        if($blockType == "single"){
            if($repeatType == "weekly"){
                $dates = $this->Blackout->singleBlockWeekly($start_date,$endsOn,$repeatDays,$frequency);
                debug($dates);
                die;
            }
        }
     }
}
这是我的
型号

class Blackout extends CalendarAppModel
{
   var $name = 'Blackout';
   var $useTable = false;
   function singleBlockWeekly($startDate,$endDate,$repeatEvery = array(),$freq)
   {
     /*my code here...brevity...*/
   }
}
所以我在这里只是在Blackout模型中调用singleBlockWeekly函数。我想知道为什么即使在
singleBlockWeekly
函数中没有任何与SQL相关的代码,我也会出现奇怪的SQL错误

非常感谢您的帮助!谢谢!:)

我想这是一个插件? 除了不能将其作为“Blackout”包含外,还需要使用有文档记录的插件语法“Calendar.Blackout”。 否则,您将加载一个AppModel实例,当然,它没有此方法

如果您调试了模型实例,您可能会发现:

debug($this->Blackout);

此SQL错误始终是误用model include语句的指示器。

加载模型时出现问题,请尝试此操作

$this->loadModel('Blackout');
$dates = $this->Blackout->singleBlockWeekly($start_date,$endsOn,$repeatDays,$frequency);

你能为这个发布你的SQL查询吗?这很奇怪,我对这个没有SQL查询,但它给了我一个SQL错误。在这个函数“singleBlockWeekly”中,你写过任何find查询吗?或者请将行添加为$this->loadModel('Blackout');在那之前调用函数nope。其中没有查找查询或任何与数据库相关的函数/代码。请尝试放置
public
而不是
var
我只是不小心!我的模型上有两个相同的函数名,这给了我一个奇怪的错误,关于类声明被嵌套,类似这样的。事实上,我已经试过你关于设置日历的建议。Blackout,我已经在$uses部分设置了日历。问题是我遇到了这样一个错误:类声明可能没有嵌套。。但是,我再次注意到,我有两个函数同名,所以我认为这会使问题恶化,但我已经有了正确的声明,只是有一个错误是由两个相同的函数名引起的。无论哪种方式,如果使用插件类,您都需要更加小心地使用声明。