🗂
CakePHP5 主キーに「id」を使用しない 「id」以外の主キー
別システムからの移行でCakeのルールに沿わないテーブル構造です。マスタ的なテーブルであるため、ルールに沿ってCakeの恩恵をうけるよりはそのままのテーブル構造で進める方がコストが少ないと判断しました。
cake bake のあと
Entityの_accessibleに追加
src/Model/Entity/Xxx.php
class XXX extends Entity
{
protected array $_accessible = [
'code' => true, // ← 主キーカラム追加
...
Table の validator を追加
src/Model/Table/Xxx.php
public function validationDefault(Validator $validator): Validator
{
$validator
->scalar('code')
->requirePresence('code', 'create')
->notEmptyString('code');
ビューに追加
templates/xxx/add.php
<?php
echo $this->Form->control('code', ['type' => 'text']);
edit.php は編集しない。主キーは変更できない仕様にするのがよさそう。頑張るところじゃないね。
あと、アソシエーションの設定が必要になるかもsrc/Model/Table/XxxTable.php の initialize に hasManyの設定と、相手のTable.phpのinitialezeに belongsTo の設定と。
Discussion