我在这里不知所以情况如下我有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');
非常感谢任何有关情况的见解
答案 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';