Ich habe eine roles
Tabelle. Sieht wie folgt aus:CakePHP 3 Eintrag erstellen, benutzerdefiniertes primäres Feld festlegen
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`);
Jetzt Kuchen wird nicht als „normal“ Feld zu erkennen, so dass es geben keine Eingabefeld.
Ich reparierte meiner Meinung nach mit diesem:
// src/Template/Admin/Roles/add.ctp
echo $this->Form->control('name', ['class' => 'form-control']);
Und nun die Abhilfe in meinem Controller:
// 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.'));
}
Es speichert die Eingabe, sondern füllt nicht alles in der Datenbank Zeile nach oben role
. Fehle ich etwas?
überprüfen Sie die 'RoleEntity'-Datei im Entity-Ordner, ist es zugänglich! –
Was tun Sie, wenn Sie eine Rolle umbenennen müssen? Und wie würdest du das machen, wenn es ausländische Schlüsselzwänge gibt? Außerdem müssen Primärschlüssel per Definition eindeutig sein. – ndm