错误table1与table2 cakephp3无关

时间:2015-04-05 07:07:35

标签: php cakephp associations

email_orgs与组织有很多关系

Tabel email_orgs

id   |  name  | organizations_id

1    |  a     | 1

2    |  b     | 1

3    |  c     | 2

4    |  d     | 3

表组织

id   |  name  

1    |  aa     

2    |  bb    

3    |  cc 

模型email_orgs

class email_orgsTable extends table
{    
    public function initialize(array $config)
    {       
        $this->table('email_orgs');
        $this->primaryKey('id');

        $this->belongsTo('organizations', [
            'foreignKey' => 'organizations_id', 
            'joinType' => 'INNER',          
            'className' => 'organizations',         
        ]);
    }

}

模特组织

class organizationsTable extends table
{       
    public function initialize(array $config)
    {       
        $this->table('organizations');
        $this->primaryKey('id');

        $this->belongsTo('tabaghe_organizations_peoples', [
            'foreignKey' => 'tabagheOrganizationsPeople_id', 
            'joinType' => 'INNER',          
        ]);
        $this->belongsTo('onvane_organizations', [
            'foreignKey' => 'onvaneOrganizations_id', 
            'joinType' => 'INNER',          
        ]);         
    }
}

控制器

    $email_org=TableRegistry::get('email_orgs');
    $email_org=$email_org->find('all')->contain(['organizations'])->offset($from)->limit($to) ;   

说erro“email_orgs与组织无关”

请帮助我

2 个答案:

答案 0 :(得分:2)

真傻。

我不知道,但在数据库和模型中将email_orgs重命名为emailorgs

这很有效。

我不知道为什么?

答案 1 :(得分:2)

  
    

模型和数据库约定

  

表类名称是复数和CamelCased。 People,BigPeople和ReallyBigPeople都是传统模型名称的例子。

与CakePHP模型对应的表名称是复数并加以强调。上述模型的基础表分别是people,big_people和really_big_people。

您可以使用实用程序库Cake \ Utility \ Inflector来检查单数/复数单词。有关更多信息,请参阅Inflector。

带有两个或更多单词的字段名称被强调:first_name。

默认情况下,hasMany,belongsTo或hasOne关系中的外键被识别为相关表的(单数)名称,后跟_id。因此,如果Bakers有很多蛋糕,蛋糕表将通过baker_id外键引用面包师表。对于类名为category_types的表,其名称包含多个单词,外键将为category_type_id。

在模型之间的BelongsToMany关系中使用的连接表应该以它们将要连接的模型表命名,按字母顺序排列(apples_zebras而不是zebras_apples)。

conventions