2014-01-26 39 views
3

我StatsController.php与CakePHP的:与模型和表名问题

class StatsController extends AppController { 
    public function edit($id = null) { 
     var_dump($this->Stat); 
    } 
} 

我StatModel.php与

class Stat extends AppModel { 
    public $useTable = 'tips'; 
    // .... 
} 

当我尝试保存我的数据,我最初的错误是:

Missing Database Table | Error: Table stats for model Stat was not found in datasource default.

我在做什么错,谢谢。

这里是的var_dump:

object(AppModel)[26] 
    public 'useDbConfig' => string 'default' (length=7) 
    public 'useTable' => string 'stats' (length=5) 
    public 'id' => null 
    public 'data' => 
    array (size=0) 
     empty 
    public 'schemaName' => null 
    public 'table' => string 'stats' (length=5) 
    public 'primaryKey' => string 'id' (length=2) 
    protected '_schema' => null 
    public 'validate' => 
    array (size=0) 
     empty 
    public 'validationErrors' => 
    array (size=0) 
     empty 
    public 'validationDomain' => null 
    public 'plugin' => null 
    public 'name' => string 'Stat' (length=4) 
    public 'alias' => string 'Stat' (length=4) 
    public 'tableToModel' => 
    array (size=1) 
     'stats' => string 'Stat' (length=4) 
    public 'cacheQueries' => boolean false 
    public 'belongsTo' => 
    array (size=0) 
     empty 
    public 'hasOne' => 
    array (size=0) 
     empty 
    public 'hasMany' => 
    array (size=0) 
     empty 
    public 'hasAndBelongsToMany' => 
    array (size=0) 
     empty 
    public 'actsAs' => null 
    public 'Behaviors' => 
    object(BehaviorCollection)[27] 
     public 'modelName' => string 'Stat' (length=4) 
     protected '_methods' => 
     array (size=0) 
      empty 
     protected '_mappedMethods' => 
     array (size=0) 
      empty 
     protected '_enabled' => 
     array (size=0) 
      empty 
     protected '_loaded' => 
     array (size=0) 
      empty 
     public 'defaultPriority' => int 10 
    public 'whitelist' => 
    array (size=0) 
     empty 
    public 'cacheSources' => boolean true 
    public 'findQueryType' => null 
    public 'recursive' => int 1 
    public 'order' => null 
    public 'virtualFields' => 
    array (size=0) 
     empty 
    protected '_associationKeys' => 
    array (size=4) 
     'belongsTo' => 
     array (size=6) 
      0 => string 'className' (length=9) 
      1 => string 'foreignKey' (length=10) 
      2 => string 'conditions' (length=10) 
      3 => string 'fields' (length=6) 
      4 => string 'order' (length=5) 
      5 => string 'counterCache' (length=12) 
     'hasOne' => 
     array (size=6) 
      0 => string 'className' (length=9) 
      1 => string 'foreignKey' (length=10) 
      2 => string 'conditions' (length=10) 
      3 => string 'fields' (length=6) 
      4 => string 'order' (length=5) 
      5 => string 'dependent' (length=9) 
     'hasMany' => 
     array (size=11) 
      0 => string 'className' (length=9) 
      1 => string 'foreignKey' (length=10) 
      2 => string 'conditions' (length=10) 
      3 => string 'fields' (length=6) 
      4 => string 'order' (length=5) 
      5 => string 'limit' (length=5) 
      6 => string 'offset' (length=6) 
      7 => string 'dependent' (length=9) 
      8 => string 'exclusive' (length=9) 
      9 => string 'finderQuery' (length=11) 
      10 => string 'counterQuery' (length=12) 
     'hasAndBelongsToMany' => 
     array (size=12) 
      0 => string 'className' (length=9) 
      1 => string 'joinTable' (length=9) 
      2 => string 'with' (length=4) 
      3 => string 'foreignKey' (length=10) 
      4 => string 'associationForeignKey' (length=21) 
      5 => string 'conditions' (length=10) 
      6 => string 'fields' (length=6) 
      7 => string 'order' (length=5) 
      8 => string 'limit' (length=5) 
      9 => string 'offset' (length=6) 
      10 => string 'unique' (length=6) 
      11 => string 'finderQuery' (length=11) 
    protected '_associations' => 
    array (size=4) 
     0 => string 'belongsTo' (length=9) 
     1 => string 'hasOne' (length=6) 
     2 => string 'hasMany' (length=7) 
     3 => string 'hasAndBelongsToMany' (length=19) 
    public '__backAssociation' => 
    array (size=0) 
     empty 
    public '__backInnerAssociation' => 
    array (size=0) 
     empty 
    public '__backOriginalAssociation' => 
    array (size=0) 
     empty 
    public '__backContainableAssociation' => 
    array (size=0) 
     empty 
    protected '_insertID' => null 
    protected '_sourceConfigured' => boolean false 
    public 'findMethods' => 
    array (size=6) 
     'all' => boolean true 
     'first' => boolean true 
     'count' => boolean true 
     'neighbors' => boolean true 
     'list' => boolean true 
     'threaded' => boolean true 
    protected '_eventManager' => null 
    protected '_validator' => null 
+0

请澄清:“看来我的模型没有使用”。您在“编辑”操作中实际尝试的是什么,哪些不起作用?另外,你在什么版本的CakePHP中?而且,你为什么在你的模型中有“blablallalsaddasdasdasd”。 – Dave

+0

@Dave此时在我的编辑功能,我只有这个代码,很好。当我说'我的模型未被使用'时,我的意思是它似乎没有被加载,因为我没有PHP错误(在我的代码中,我放错了东西来产生错误)。如果一切正常,它应该打破代码,但事实并非如此。我希望它更清楚。使用的版本是2.4.4 – zeflex

+0

不要问一个问题不存在,请尝试给我们实际的问题。就像...当我尝试执行find()时,它提供了一个错误,或者返回了错误的数据......等等。你基本上说“这里有一些没有问题的代码 - 问题是什么?”答案 - 没有。 – Dave

回答

4

I have StatModel.php with

文件StatModel.php重命名为Stat.php,并确保它位于您Model文件夹中。模型文件不附加单词Model。我知道,这是与控制器的不一致,但我没写蛋糕:)

When I call /stats/edit, it seems my model is not used, I didn't get any errors and also I am not able to change the table name (I want to use tips table)

CakePHP中找不到Stat.php文件在你的模型文件夹,这样它会自动创建一个假的模型。使用模型名称作为模式,它会查找stats表。

+0

太棒了!感谢马修! – zeflex

+0

我犯了很多次这个错误。我希望有一个功能可以在Cake中禁用自动模型。等到你必须追查失败的关联。 – cgTag

+0

Fake - > AppModel实例。这可以通过调试(get_class($ this-> Stat))来确认;' – AD7six

-2

我猜偏转不能解决统计正确统计。不要使用缩写,为什么不统计?为什么不使用TipsController来处理提示表?

但是,如果你想使用这种模式的尝试:

public $uses = array('Stat'); 

在控制器中明确设置这一模式。

+0

它已经加载模型,或者它不会成功调试'$ this-> Stat',对吧? – Dave

+0

我没有尝试,但其他答案解决了我的问题。谢谢btw。 – zeflex

+0

-1这里没有任何错误,或使用缩写。 – AD7six