Cakephp 2.3.9有很多不同的表名

时间:2013-12-10 11:19:45

标签: cakephp cakephp-2.3

我在这里不知所以情况如下我有2个表: 过滤器和小部件(是的,我不允许更改的无蛋糕表名称)

现在过滤器属于widget,widget有许多过滤器,这两个模型都显示在pr()中。

[name] => Filter
[useTable] => filter
[belongsTo] => Array
    (
        [Widget] => Array
            (
                [className] => Widget
                [foreignKey] => id
                [conditions] => 
                [fields] => 
                [order] => 
                [counterCache] => 
            )

    )

并过滤

[name] => Widget
[useTable] => widget
[hasMany] => Array
    (
        [Filter] => Array
            (
                [className] => Filter
                [foreignKey] => widget
                [conditions] => 
                [fields] => 
                [order] => 
                [limit] => 
                [offset] => 
                [dependent] => 
                [exclusive] => 
                [finderQuery] => 
                [counterQuery] => 
            )

    )

现在当我做一个简单的问题时,问题如下:

pr($this->Filter->findById(1934));
or
pr($this->Widget->findById(1663)); 

我收到错误:

  

缺少数据库表   错误:在数据源默认值中找不到模型Widget的表analyse_widgets。

但是当我使用这段代码时它工作得很好,但这只是为了使用evrytime我想找到一些东西:

$this->Widget;
pr($this->Filter->findById(1934));
pr($this->Widget->findById(1663)); 

我不知道如何让它像它应该的那样工作。是不是因为没有caketable名字?还是我忘记了什么?

这是我加载模型和清除模型缓存没有影响:

App::uses('Analyse.Filter', 'Model');
App::uses('Analyse.Widget', 'Model');

$this->uses = array('Analyse.Widget', 'Analyse.Filter');

非常感谢任何有关情况的见解

2 个答案:

答案 0 :(得分:1)

试试这个......

App::uses('Filter', 'Model');
App::uses('Widget', 'Model');

$this->uses = array('Widget', 'Filter');

在模型中添加$ useTable即。

public $useTable = 'widget'; 
public $useTable = 'filter';

希望它会对你有所帮助!

答案 1 :(得分:0)

当你使用带有自定义表名的hasMany或belongsTo时,似乎仍然使得它依赖于自己的模型。除非你在发现的函数之前再次重新设置它们:$ this-> Filter和$ this-> Widget

我通过将它放在beforeFilter中做了一个解决方法,但只有当你使用没有蛋糕表名的关系时才需要它。

$this->Filter->useTable = 'filter';
$this->Widget->useTable = 'widget';