Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cakephp 3.6.3中为表sql之一命名_Sql_Cakephp - Fatal编程技术网

如何在cakephp 3.6.3中为表sql之一命名

如何在cakephp 3.6.3中为表sql之一命名,sql,cakephp,Sql,Cakephp,我正在尝试访问联系人。我在犯错误 错误:SQLSTATE[42000]:语法错误或访问冲突:1066非唯一表/别名:“联系人” 如果使用SQL关键字作为表列名,则可以在config/app.php中为数据库连接启用标识符引用 如何在表关联中设置Alias() ContactsController.php public function index() { $this->paginate = [ 'contain' => ['User

我正在尝试访问联系人。我在犯错误

错误:SQLSTATE[42000]:语法错误或访问冲突:1066非唯一表/别名:“联系人”

如果使用SQL关键字作为表列名,则可以在config/app.php中为数据库连接启用标识符引用

如何在表关联中设置Alias()

ContactsController.php

     public function index()
        {
    $this->paginate = [
        'contain' => ['Users', 'Contacts', 'SourceProspects', 'Status', 
    'Secteurs', 'Products']
    ];
    $contacts = $this->paginate($this->Contacts);
    $this->set(compact('contacts'));
    }

public function view($id = null)
    {
    $contact = $this->Contacts->get($id, [
        'contain' => ['Users', 'Contacts', 'SourceProspects', 'Status', 
    'Secteurs', 'Products', 'Leads', 'Accounts']
    ]);

    $this->set('contact', $contact);
   }
ContactsTable.php

$this->setTable('contacts');
    $this->setDisplayField('name');
    $this->setPrimaryKey('id');

    $this->addBehavior('Timestamp');

    $this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);
    $this->belongsTo('Contacts', [
        'foreignKey' => 'contact_type_id'
    ]);
    $this->belongsTo('Leads', [
        'foreignKey' => 'lead_id'
    ]);
    $this->belongsTo('SourceProspects', [
        'foreignKey' => 'source_prospect_id'
    ]);
    $this->belongsTo('Accounts', [
        'foreignKey' => 'account_id'
    ]);
    $this->belongsTo('Status', [
        'foreignKey' => 'statut_id'
    ]);
    $this->belongsTo('Secteurs', [
        'foreignKey' => 'secteur_id'
    ]);
    $this->belongsTo('Products', [
        'foreignKey' => 'product_id'
    ]);
    $this->hasMany('Accounts', [
        'foreignKey' => 'contact_id'
    ]);
    $this->hasMany('Leads', [
        'foreignKey' => 'contact_id'
    ]);
}

问题似乎在这里

$this->belongsTo('Contacts', [
    'foreignKey' => 'contact_type_id'
]);
通过这种方式,您可以将Contacts表本身连接起来,从而创建一个非唯一的别名

也许只是一个打字错误,你想这么做

$this->belongsTo('ContactTypes', [
    'foreignKey' => 'contact_type_id'
]);
但是,如果您确实想要使用该关系,那么您必须为联接的联系人表别名

$this->belongsTo('ParentContacts', [ // choose your alias here
    'className' => 'Contacts'
    'foreignKey' => 'contact_type_id'
]);
因此,每次必须引用联接表时,可以执行以下操作

'contain' => [
    ..., 
   'ParentContacts', 
 ],

您使用的是原始查询还是ORM?请不要将文本作为图像插入,而是将其作为实际文本插入,并请显示用于生成查询的代码以及相关关联的配置。另外,请始终提及您正在使用的确切CakePHP版本(供应商/CakePHP/CakePHP/version.txt或
lib/Cake/version.txt中的最后一行)-谢谢!ORM虽然我不太熟悉,但它被认为是垃圾邮件,所以我改用了screen