2017-02-03 15 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_» можно интерпретировать как выдачу команд SQL через слой модели CakePHP для создания ограничений первичного ключа в базе данных. Его также можно интерпретировать как настройку уровня модели для распознавания ограничения первичного ключа, которое уже существует в базе данных. В любом случае также неясно, какая конкретная проблема у вас есть при этом. Пожалуйста, обновите свой вопрос, чтобы ясное понимание фактического намерения и конкретной проблемы, связанной с программированием. – 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 не поддерживает составные первичные ключи. Если вы хотите напрямую манипулировать данными таблицы соединений, используйте прямые запросы запросов или добавьте первичный ключ, чтобы действовать на нем как обычная модель.

Вы можете указать комбо как поле UNIQUE в MySQL, но CakePHP будет ожидать одно поле для своего ключа, по умолчанию «id».

+0

Вопрос отмечен как CakePHP 3, а CakePHP 3 поддерживает почти все составные ключи (дерево и преобразование поведения - примеры того, где они еще не поддерживаются). – ndm