代码之家  ›  专栏  ›  技术社区  ›  Rixius

Cakephp函数处于未执行模式

  •  1
  • Rixius  · 技术社区  · 16 年前

    我的漫画模型中有这样一个功能:

    <?php
    
    class Comic extends AppModel
    {
        var $name = "Comic";
        // Methods for retriving information.
        function testFunc(){
            $mr = $this->find('all');
            return $mr;
        }
    }
    ?>
    

    <?php
    class ComicController extends AppController
    {
       var $name = "Comic";
       var $uses = array('Comic');
       function index()
       {
      }
      function view($q)
      {
        $this->set('array',$this->Comic->testFunc());
      }
    }
    ?>
    

    当我尝试加载页面时;我得到以下错误:

    警告(512):SQL错误:1064:您的SQL语法有错误;在第1行[CORE/cake/libs/model/datasources/dbo\u source.php,第525行]的“testFunc”附近,查看与您的MySQL服务器版本对应的手册,以获得正确的语法 查询:testFunc

    SQL转储如下所示:

    (默认)2个查询需要1毫秒
    受Nr查询错误影响的行数(毫秒)
    1描述 comics 10 10 1
    2 testFunc 1064:您的SQL语法有错误;在第10行的“testFunc”附近,检查与MySQL服务器版本对应的手册,以获得正确的语法

    所以看起来,它不是运行testFunc()函数,而是试图运行一个“testFunc”查询,结果失败了。。。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Daniel Wright    16 年前

    好吧,我终于可以重现同样的错误了。我怀疑这个错误是因为Cake试图“自动”创建模型功能,当它找不到与控制器匹配的模型时就会这样做。所以,我做的是创建控制器( app/controllers/comic_controller.php )但不是模特。我使用了原始海报的精确控制器代码,当我试图调用 Comic::view 行动,我也犯了同样的错误。

    app/models/comics.php )以至于蛋糕找不到它,于是试图用魔法来补偿。失败了。

    following the conventions ! 至少, 开始 跟着他们,然后一次打破一个,这样当有东西打破,你知道 为什么?

    • 控制器:
      • 类名: ComicsController extends AppController
      • 文件名: app/controller/comics_controller.php
    • 型号:
      • 类名: Comic extends AppModel
      • 文件名: app/controller/comic.php
    • 视图目录: app/views/comics/
    • comics
        2
  •  0
  •   Travis Leleu    16 年前

    如果您进行var\u转储($this->漫画->testFunc())?看起来应该有用。顺便说一句,你真的可以这样设置$数组吗?我以为array在PHP中是一个保留字。无论如何,您可能希望将其重命名为更具描述性的名称(类型为array,因此您不会添加任何尚未使用该名称的元数据)。

    推荐文章