如何在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