2017-02-03 28 views
-3

I want to create candidate key (as primary key) using program_id, location_id, course_id如何在cakephp 3中創建候選鍵?

+0

是的,但通過cakephp 3,我想創建三個關鍵(program_id,location_id,course_id)的關鍵組合 –

+0

您的問題非常模糊。 「在cakephp 3_中創建密鑰」可以解釋爲通過CakePHP模型層發佈SQL命令來在數據庫中創建主鍵約束。它也可以解釋爲配置模型層以識別數據庫中已經存在的主鍵約束。無論如何,還不清楚你在做這些事情時遇到了什麼具體問題。請更新您的問題,以便實際意圖以及與該任務有關的具體編程相關問題變得清晰。 – ndm

+0

請參閱** http://stackoverflow.com/help/how-to-ask**關於如何改進您的問題。 – ndm

回答

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設計一起工作單數主鍵,pe r docs on Conventions

CakePHP不支持組合主鍵。如果您想要直接操作連接表數據,請使用直接查詢調用或添加一個主鍵來作爲普通模型進行操作。

您可以改爲在MySQL中指定組合爲UNIQUE字段,但CakePHP將默認使用單個字段作爲鍵,默認情況下爲「id」。

+0

這個問題被標記爲CakePHP 3,並且CakePHP 3幾乎在任何地方都支持複合鍵(樹和翻譯行爲是它們尚不受支持的示例)。 – ndm