代码之家  ›  专栏  ›  技术社区  ›  Daniel Bingham

不能在cakephp中的模型类中调用set或create-from-with?

  •  0
  • Daniel Bingham  · 技术社区  · 15 年前

    我在一个cakephp模型类中工作,编写一个函数,它应该在模型上执行一系列操作。我试着遵循瘦控制器,胖模型的想法。但是,我好像打不到电话 任何 模型的函数。某些内容尚未初始化,因为执行以下操作时会出现SQL错误:

    Warning (512): SQL Error: 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 '' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 681]
    
    Query: SHOW FULL COLUMNS FROM 
    

    看起来好像没有在内部某处设置表名。我的模型如下:

    class Search extends AppModel {
        var $name='Search';
        var $hasMany = 'SearchResult';
        var $actsAs = array('Containable');
    
    
        function search($query) {
                $this->create();
                $this->set('query', $query);
                $this->save();
            }
    }
    

    我知道模型所需的一切都已经创建好了,因为从模型控制器调用完全相同的函数序列很好。像这样:

    function search($query) {
                $this->Search->create();
                $this->Search->set('query', $query);
                $this->Search->save();
    }
    

    那很好。那又是什么呢?这是怎么回事?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Rob Wilkerson    15 年前

    你想做什么? set() 方法?两者都存在同名的方法 Model 和; Controller 但是我从来没有理由在 模型 语境。此外,您的特殊用途 就像它属于 控制器 背景(尽管这充其量只是一个有根据的猜测)。

    如果您试图设置一个名为 query 它可以被视图访问,然后它需要在控制器中。 create() save() 当然,它们是 模型 语境。

        2
  •  0
  •   Daniel Bingham    15 年前

    解决方案最终与我的函数发生了命名冲突。 search 以及Cakephp调用堆栈中更深层的内容。更改函数的名称 搜索 对其他东西(例如我的搜索)进行了修复。