私はroles
テーブルを持っています。Cakephp 3 create entry、カスタムプライマリフィールドを設定
CREATE TABLE `roles` (
`role` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`permissions` longtext COLLATE utf8_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `roles`
ADD PRIMARY KEY (`role`),
ADD UNIQUE KEY `role` (`role`);
ケーキはこれを「通常の」フィールドとして認識しないため、入力フィールドは表示されません。
私はこれで私の見解を固定:それは、エントリを保存しますが、データベース行に何かを埋めていないrole
// src/Controller/Admin/RolesController.ctp
$roleData = $this->request->getData();
$roleData['role'] = strtolower($roleData['name']);
unset($roleData['name']);
$role = $this->Roles->patchEntity($role, $roleData);
if ($this->Roles->save($role)) {
$this->Flash->success(__('The role has been saved.'));
}
:
// src/Template/Admin/Roles/add.ctp
echo $this->Form->control('name', ['class' => 'form-control']);
そして今、私のコントローラでの回避策。何か不足していますか?
Entityフォルダの 'RoleEntity'ファイルをチェックしますか?それはアクセス可能ですか? –
ロールの名前を変更する必要があるときはどうしますか?外来キーの制約があるときは、どうやってそれをやりますか? btw、主キーは定義によって一意である必要があります。 – ndm