【问题标题】:How to create candidate key in cakephp 3?如何在 cakephp 3 中创建候选键?
【发布时间】:2017-02-03 18:51:16
【问题描述】:

【问题讨论】:

  • 是的,但是通过 cakephp 3,我想创建三个键(program_id,location_id,course_id)的键组合
  • 你的问题很模糊。 “在 cakephp 3 中创建候选键”可以解释为通过 CakePHP 模型层发出 SQL 命令以在数据库中创建主键约束。它也可以解释为配置模型层以识别数据库中已经存在的主键约束。无论如何,您在执行这些操作时遇到的具体问题也不清楚。请更新您的问题,以使实际意图以及与任务相关的特定编程问题变得清晰。
  • 请参阅 stackoverflow.com/help/how-to-ask,了解如何改进您的问题。

标签: php mysql cakephp mysqli cakephp-3.0


【解决方案1】:

根据评论更新 - 最初认为这是一个 2.0 问题。

CakePHP 3 确实支持composite keys:

class YourTable extends Table {
    public function initialize(array $config)
    {
        $this->table('table_name');
        $this->primaryKey(['program_id', 'location_id', 'course_id']);
    }
}

以及复合关系:

$this->belongsTo('Students', [
    'foreignKey' => ['program_id', 'location_id', 'course_id'],
]);

上一个答案:

CakePHP 2.0 被设计为使用单个主键,根据他们的docs on Conventions

CakePHP 不支持复合主键。如果您想直接操作连接表数据,请使用直接查询调用或添加主键以将其作为普通模型进行操作。

您可以改为在 MySQL 中将组合指定为 UNIQUE 字段,但 CakePHP 将期望单个字段作为其键,默认为“id”。

【讨论】:

  • 这个问题被标记为 CakePHP 3,CakePHP 3 几乎在所有地方都支持复合键(树和翻译行为是尚不支持的示例)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多